Нужно ли удалять событие selectedIndexChange из listBox при обновлении данных в нем? - PullRequest
2 голосов
/ 22 февраля 2011

У меня есть список, в котором есть серия дел, извлеченных из базы данных.Когда я создаю новый случай, я не хочу обновлять listBox, чтобы отразить фактическое состояние таблицы дел в базе данных.Но я получаю NullReferenceException от обработчика событий для этой строки: populateBoxes((int)lb.SelectedValue), когда я пытаюсь обновить его.

Это мой обработчик событий в списке:

private void lbCases_SelectedIndexChanged(object sender, EventArgs e)
        {
            ListBox lb = (ListBox)sender;

            populateBoxes((int)lb.SelectedValue);
        }

Обновлениеevent:

private void button1_Click(object sender, EventArgs e)
        {

            this.casesTableAdapter.Fill(this.caseDB.cases);

        }

Я использовал встроенную функцию VSE2008 для установки источника данных, элемента отображения и значения элемента списка.

Ответы [ 4 ]

1 голос
/ 22 февраля 2011

Вы должны убедиться, что когда источник данных установлен, lbCases_SelectedIndexChanged либо не запускается, либо игнорирует событие.

Либо создайте логическое значение «Загрузка», чтобы игнорировать событие, либо установите индекс в -1 идобавьте проверку в lbCases_SelectedIndexChanged для значения индекса -1, чтобы предотвратить исключение.

0 голосов
/ 22 февраля 2011

Проверьте SelectedValue на ноль, прежде чем запускать

if (lb.SelectedValue != null)
{
    populateBoxes((int)lb.SelectedValue);
}

Кроме того, если вы хотите получить выбранное значение, вам нужно будет выбрать его после вызова:

this.casesTableAdapter.Fill(this.caseDB.cases);
0 голосов
/ 22 февраля 2011

Я полагаю, вы делаете проверку в этом обработчике событий:

    private void lbCases_SelectedIndexChanged(object sender, EventArgs e)
    {
        ListBox lb = sender as ListBox;
        if(lb == null)
            return;

        populateBoxes((int)lb.SelectedValue);
    }
0 голосов
/ 22 февраля 2011

Установите для выбранного индекса -1, а затем заполните список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...