NISHAN SANDEEPA Ответов: 3

События Combobox в C#


Рассмотрим,что есть combobox с четырьмя элементами(все,химия,физика, математика) в форме windows.Мне нужно дать пункт "все" при загрузке формы.Затем я могу увидеть combobox с пунктом "все" после загрузки формы.Для этого я могу использовать событие form_load.После загрузки формы мне нужно выполнить некоторый код, когда я изменяю элементы в combobox.Для этого я использовал событие SelectedIndexChange в combobox.Но когда я загружаю форму, возникает ошибка, потому что при загрузке формы выполняются оба события.Что же мне делать?

Sandeep Mewara

Какая ошибка?

ridoy

какая ошибка?

MT_

Вы пробовали то, что я предложил ниже ?

NISHAN SANDEEPA

Да, я пытался это сделать.Вот почему я принял твое решение.

3 Ответов

Рейтинг:
27

MT_

Привет,

Мне было интересно, можете ли вы использовать SelectionChangeCommitted скорее событие. Это сработает только тогда, когда элемент действительно выбран пользователем. Просто протестировал его, и он не срабатывает при настройке значения по умолчанию в загрузке формы.

Если вы "должны" использовать событие selectedIndexChanged, используйте то, что предложил Кристиан Граус.
Удалите обработчик событий, который вы, возможно, добавили через свой конструктор форм, теперь в вашей загрузке формы сделайте так, как показано ниже.

private void Form1_Load(object sender, EventArgs e)
{
   comboBox1.SelectedIndex = 1;
    comboBox1.SelectedIndexChanged += new EventHandler(comboBox1_SelectedIndexChanged);
}


Не забудьте удалить привязку обработчика событий из form1.designer.cs после удаления ее из конструктора форм


Надеюсь, это поможет

Милинд


[no name]

http://msdn.microsoft.com/en-in/library/system.web.ui.webcontrols.dropdownlist_events.aspx

Рейтинг:
2

Christian Graus

Создайте выбранное событие изменения индекса в событии загрузки вместо того, чтобы определять его в конструкторе. Тогда он не будет срабатывать, потому что его не будет там, когда вы устанавливаете его в коде.


NISHAN SANDEEPA

Не могли бы Вы уточнить Кристиан.

Christian Graus

Я понятия не имею, как объяснить это более ясно. Вы можете подключить событие в коде. Сделать это в событии load

NISHAN SANDEEPA

Могу ли я общаться с вами по gmail или face book.

Christian Graus

Ни единого шанса в аду. Это действительно тривиально. Честно говоря, так оно и есть.

NISHAN SANDEEPA

Ладно, это не имеет значения. Я новичок в программировании.Я попробую еще раз.Огромное спасибо.

MT_

Нишан, я согласен с Кристианом, что тебе нужно прояснить основы, прежде чем переходить к кодированию. Я подробно изложил то, что Кристиан пытается предложить в моем решении.

Christian Graus

Большинство людей здесь, кажется. Вот почему я не хочу, чтобы 1000 человек, которые являются новичками, преследовали меня за помощью на facebook. На самом деле, все вы, люди, будете бороться за то, чтобы когда-нибудь стать программистами, потому что вы никогда не изучите основы. Купите книгу и работайте над ней, вместо того, чтобы прыгать и теряться в спешке.

NISHAN SANDEEPA

Я понял, что это так.Я ищу некоторые электронные книги и пытаюсь их скачать.Спасибо, Кристиан,не расстраивайся и извини за беспокойство.