У меня есть выпадающий список с именем cmbSubjects
.Его цель в моем проекте - сменить тему в конкурсе викторины.Я хочу, чтобы, когда выбранный элемент был изменен, в окне сообщения должен был быть задан вопрос к мастеру проверки, хотят ли они продолжить, если в поле со списком остались вопросы без ответа до изменения.Если они ответят «НЕТ», то в выпадающем списке должен быть выбран ранее выбранный пункт.Я получил этот код, чтобы сделать это, но проблема в том, что окно сообщений появляется дважды, если мастер quix выбирает НЕТ в окне сообщений.Я выяснил причину (после входа в код с точки останова) в том, что, когда окно сообщения возвращает NO, мой код изменяет выбранное значение комбинированного списка на его предыдущее значение, что вызывает событие cmbSubjects_SelectedIndexChanged
.Я попытался изменить код, добавив переменную, чтобы подсчитать, сколько раз появилось окно сообщения, чтобы предотвратить это.Проблема в том, что он появляется только после первого изменения значения в выпадающем списке.Код ниже на самом деле модифицированный.Кто-нибудь может мне с этим помочь?Заранее спасибо.(Я использую C #)
private void cmbSubjects_SelectedIndexChanged(object sender, EventArgs e)
{
if (pnlAvailable.Controls.Count != 0)
{
if (countMsg < 1)
{
DialogResult res = MessageBox.Show("There are still available questions. Are you sure you want to change the subject?", "Changing subject...", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
if (res == DialogResult.Yes)
{
cmbIndex = cmbSubjects.SelectedIndex;
countMsg = 0;
switch (cmbSubjects.SelectedIndex)
{
case 0:
subject = "life";
break;
case 1:
subject = "math";
break;
case 2:
subject = "physical";
break;
case 3:
subject = "technology";
break;
case 4:
subject = "vocational";
break;
}
GenQstBtns();
}
else if (res == DialogResult.No)
{
countMsg = 1;
cmbSubjects.SelectedIndex = cmbIndex;
}
}
}
}