C# триггер автозаполнения поля со списком SelectionChangeCommited

У меня проблемы со свойством автозаполнения поля со списком. Я хочу инициировать событие SelectionChangeCommited каждый раз, когда я выбираю элемент с помощью автозаполнения, но оно не работает. Событие запускается только тогда, когда я использую щелчок мыши и выбираю параметр или когда поле со списком сфокусировано, и я использую клавиши со стрелками на клавиатуре. Как добиться такого поведения с помощью свойства автозаполнения?

В моем комбо установлены следующие свойства:

AutoCompleteMode = SuggestAppend
AutoCompleteSource = ListItems
FormattingEnabled = True

Элементы в моей комбинации установлены с источником данных.

Есть идеи? Спасибо


person Jorge Zapata    schedule 04.11.2011    source источник


Ответы (2)


Если вы имеете в виду, что хотите, чтобы он регистрировал изменение, когда вы начинаете печатать:

Вызовите событие SelectionChangeCommited из события TextChanged.

Если вы никогда этого не делали, самый простой пример, который я смог найти, был на форумах .net здесь Конечно, методы, показанные там, являются общими, но их очень просто понять и применить к вашему коду.

РЕДАКТИРОВАНИЕ ИСПРАВЛЕНО (на момент последнего комментария):

По-прежнему связывайте события вместе, но вместо использования TextChanged, которое будет происходить каждый раз при вводе, используйте SelectedIndexChanged, которое возникает, когда вы используете мышь для выбора автоматически предлагаемого элемента.

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
   comboBox1_SelectionChangeCommitted(sender, e);
}
person KreepN    schedule 04.11.2011
comment
Не когда я начинаю печатать, я хочу вызвать событие при выборе предложенного варианта. - person Jorge Zapata; 05.11.2011
comment
А, я понимаю, что ты пытаешься сделать. Вы по-прежнему используете мышь для выбора, но когда вы нажимаете на предложенный вариант, он не регистрирует его как SelectionChangeCommited, верно? - person KreepN; 05.11.2011
comment
Это не срабатывает, позвольте мне проверить это. - person Jorge Zapata; 05.11.2011
comment
Это потому, что это неправильный код, я вставил неправильный, приношу свои извинения. Я это исправил (и тоже проверил, у меня сработало). Кроме того, причина, по которой код других парней не работает, заключается в том, что событие, в котором он вызывает код, запускается, когда сам элемент управления проверяется с загрузкой самой формы. - person KreepN; 05.11.2011
comment
Вы уже пробовали отредактированный код выше? Я не был уверен, так как я отправил это поздно в пятницу для вас, дайте мне знать, как это получается. - person KreepN; 07.11.2011
comment
Извините за опоздание, меня не было в городе на этих выходных, но теперь я вернулся. На самом деле ваш код работает, спасибо, чувак - person Jorge Zapata; 07.11.2011

вы можете использовать трюк и вызвать comboBox1_SelectionChangeCommitted в подтвержденном событии

когда когда-либо текст в поле со списком изменяется, и пользователь покидает поле со списком, он будет запущен

  private void comboBox1_Validated(object sender, EventArgs e)
    {
        comboBox1_SelectionChangeCommitted(sender, e);

    }
person DeveloperX    schedule 04.11.2011
comment
Да я проверил, решение моей проблемы было ответом выше, все равно спасибо - person Jorge Zapata; 07.11.2011