Сбросить текст в выпадающем списке после выделения - PullRequest
2 голосов
/ 29 декабря 2011

У меня есть поле со списком в моей форме. Он находится в режиме DropDown и имеет автозаполнение. Когда он впервые отображается, его текст "Choose part...". Я хотел бы, чтобы после сброса текст был сброшен на это. Я пробовал это (при условии, что выпадающий список называется comboBox1):

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
      // [omitted]

      comboBox1.Text = "Choose part...";
    }

Работает только тогда, когда выбор сделан с помощью клавиатуры (например, введите значение и нажмите [Enter] или , чтобы начать ввод, используйте стрелки для выбора одного из значений автозамены и нажмите [Enter] ). Когда выбор сделан с помощью мыши, текст остается выбранным значением.

У меня были проблемы с клавиатурой и мышью, которые раньше делали разные вещи с помощью комбинированных списков, но это было связано с тем, что некоторые события не запускались. Я уверен, что это событие запускается (приведенный выше код выполняется независимо от используемого метода).

Кто-нибудь видел это раньше? Любые решения?

Ответы [ 2 ]

3 голосов
/ 29 декабря 2011

Попробуйте вместо этого использовать делегат:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) {
  // [omitted]

  this.BeginInvoke((MethodInvoker)delegate { comboBox1.Text = "Choose part..."; });
}

И, как прокомментировал Ханс, это, вероятно, не считается лучшей реализацией пользовательского интерфейса, поскольку пользователи ожидают, что ComboBox будет работать.

0 голосов
/ 31 декабря 2011

Другой подход - добавить элемент с индексом 0:

ComboBox1.Items.Insert(0, new ListItem("Choose Part...", "Choose Part..."));

, а затем сбросить комбинированный список на элемент 0 после обработки события ComboBox1.SelectedListItemChanged ()

ComboBox1._SelectedIndexChanged = 0;       

ПользовательПроблема опыта здесь несколько двусмысленна: бывают ситуации, когда вы хотите сбросить список до «известного хорошего состояния».Например, пользователь может запутаться, если список останется при предыдущем выборе.Сброс списка дает пользователю некоторый смысл, что любое действие, которое он намеревался, действительно произошло.

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