Когда изменения в выпадающем списке делают что-то ( C#)
Я пытался создать программу с 3 комбинированными списками, где в зависимости от того, что вы выбираете, происходят разные вещи. Вот скриншот того, с чем я застрял.
Единственное, чего не хватает на скриншоте, это следующее, которое находится в закрытом событии void Form1_Load
cBxColor1.Items.Add("черный");
cBxColor2.Items.Add("черный");
cBxTest.Items.Add("Что-то");
На скриншоте выше я пытаюсь двумя способами написать что-то в текстовое поле. Один, когда текст меняется, а затем проверяет выбранный элемент. В этом случае что-то, черный и черный. Я планирую добавить больше позже, но пока пытаюсь заставить это работать с одним.
Первоначальный план состоял в том, чтобы некоторое время (выделенные тексты в выпадающих списках - "Кое-что, черный и черный") затем добавляли некоторый текст в текстовое поле, если это правда.
Снимок экрана с ошибкой, которую я получаю при попытке другого метода, я не уверен, что это значит.
Я гуглил и искал решение, но я действительно не мог найти ничего, что помогло бы решить мою проблему. Я был бы признателен, если 1337 hax0rz здесь поможет мне.
2 ответа
TextChanged - это событие. Используйте его в таком методе:
private void ComboBox_TextUpdate(Object sender, EventArgs e)
{
//Your code here
MessageBox.Show("You are in the ComboBox.TextUpdate event.");
}
Добавьте событие с += к вашему списку при инициализации:
ComboBox.TextUpdate += ComboBox_TextUpdate;
Поэтому при каждом обновлении TextUpdate вызывается ваш метод ComboBox_TextUpdate, и вы можете писать там код.
Вместо использования условия if, чтобы увидеть, изменился ли текст, вы должны использовать событие ComboBox SelectedValueChanged.
Чтобы создать это событие, щелкните правой кнопкой мыши ваш ComboBox и выберите свойства. Выберите "События" и дважды щелкните текстовое поле рядом с событием SelectedValueChanged.
Затем вы хотите проверить значения каждого ComboBox, как вы сделали.
private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
{
if (cBxColor1.SelectedText.Equals("Black") || cBxColor2.SelectedText.Equals("Black") || cBxTest.SelectedText.Equals("Something"))
{
tbxTest.Text = "TEST";
}
}
Кроме того, хотя заявление является почти смертельной угрозой, потому что, как только оно входит в это условие, оно не уйдет. Вы не сможете изменить значение ComboBox из-за времени выполнения.