Когда изменения в выпадающем списке делают что-то ( 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 из-за времени выполнения.

Другие вопросы по тегам