C# Ошибки в назначениях DataGridView.Datasource обрабатываются внутренне - PullRequest
0 голосов
/ 03 марта 2020

У меня есть приложение, которое назначает список значений для DataGridView. Это делается внутри блока Try catch. Иногда возникает проблема с процедурой with, которая создает этот список (также в блоке try catch), и это вызывает ошибку при выполнении назначения. Похоже, что исключение никогда не перехватывается блоком, выполняющим присваивание, и приложение останавливается.

Обрабатывается ли исключение внутри вызова присваивания, чтобы оно не распространялось на блок перехвата?

Исключение, создаваемое во всплывающих состояниях «В DataGridView произошло следующее исключение: System.IndexOutOfrangeException: у индекса 1 нет значения в System. Windows .Forms.dataGridViewDataConnection.GetError (Int32 rowIndex) Чтобы заменить это диалоговое окно по умолчанию, пожалуйста, обработать событие DataError "

Код в основном

public void SetupRunners(EventDetails _eventDetails)
    {
        try
        {
            RunnerAssociates.Clear();
            RunnerAssociates = null;

            RunnerAssociates = createRunnerAssociateList(selectedEventDetails);

            runnerAssociatesDataGridView.DataSource = RunnerAssociates;
            runnerAssociatesDataGridView.DataMember = string.Empty;
        }
        catch (Exception ex)
        {
            NZRB_Global.Utils.LogException(methodName, ex);
        }
    }

private List<Runner_Associate> createRunnerAssociateList(EventDetails _meetAndRace) //NZRB_Global.MeetAndRace _meetAndRace)
    {
        const string methodName = "createRunnerAssociateList";

        List<Runner_Associate> lra = new List<Runner_Associate>();

        try
        {
            if (null != _meetAndRace)
            {
                _meetAndRace.UpdateAllProfiles();

                foreach (RunnerDetail rd in _meetAndRace.runners.runnerList)
                {
                    Runner_Associate ra = new Runner_Associate();
                    ra.Number = rd.number;
                    ra.RunnerName = rd.name;

                    RunnerProfile profile = rd.GetRunnerProfile();

                    if ((rbJockeyDriver.Checked) || (rbCustom.Checked))
                    {
                        ra.AssociateName = rd.person;
                    }
                    else if (profile != null)
                    {
                        if (rbTrainers.Checked)
                        {
                            ra.AssociateName = profile.trainer;
                        }
                        else if (rbOwners.Checked)
                        {
                            ra.AssociateName = profile.owners;
                        }
                    }
                    lra.Add(ra);
                }
            }
        }
        catch (Exception ex)
        {
            NZRB_Global.Utils.LogException(methodName, ex); 
        }
        return lra;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...