Проблема с datagridview: неожиданное исключение

#c# #winforms #exception #datagridview

#c# #winforms #исключение #datagridview

Вопрос:

У меня есть 1 родительская форма MDI с именем as MainForm и 2 дочерние формы WorkForm и UserOp .

WorkForm имеет, datagridview который отображает users , и его datasource является BindingList . BindingList создается из List of type user , а список объявлен в родительском и доступен в этом с помощью ссылки, т. е. если я внесу какие-либо изменения в этот список, в конечном итоге это изменит список в родительском. вот код, как это делается.

  MainForm mainForm;
 public WorkForm(MainForm main)
        {

            InitializeComponent();
            this.mainForm = main;
}
  

аналогично, доступ к нему осуществляется из UserOp . теперь, если я удаляю пользователя из списка, а рабочая форма уже открыта, то представление datagrid выдает ошибку по умолчанию, что означает, что я должен обработать DataError событие.Я снова обновляю BindingList и снова назначаю его datagrid datasource .

это устраняет проблему ошибки, но после этого исключение теперь отображается иногда не всегда в program.cs это происходит, когда после удаления я просто навожу курсор мыши на форму, пока она неактивна, если форма нажата, то исключения нет. которое читается Specified argument was out of the range of valid values.
Parameter name: e.RowIndex
в строке Application.Run(new MainForm());

Ответ №1:

Иногда RowIndex может быть -1 или даже равно Count/Length коллекции в событиях.

Вы должны проверить это 🙂