Я пытаюсь очистить выбор всех элементов в WinFom ListBox при нажатии клавиши escape.
Я создал обработчик события KeyPress, чтобы поймать событие. Он работает, когда выбран только один элемент, но когда выбрано несколько элементов, событие никогда не срабатывает. Любая идея о том, что происходит?
Заранее спасибо.
Здесь я прикрепил свой обработчик событий:
private void EscapeKeyPressed(object sender, KeyPressEventArgs e)
{
try
{
if (e.KeyChar == (char)Keys.Escape)
{
switch (sender.GetType().GetProperty("Name").GetValue(sender, null).ToString())
{
case "LineLB":
LineLB.ClearSelected();
break;
case "ApplicationLB":
ApplicationLB.ClearSelected();
break;
default:
break;
}
}
}
catch(Exception ex) { MessageBox.Show(ex.Message); }
--20150526--
Спасибо всем вам, ребята, за ваши комментарии и предложения. Как некоторые из вас упоминали ранее, это была проблема с фокусом. Я добавляю строку кода в обработчик события SelectedIndexChange, и вот сравнение.
До
private void LineLB_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
if (LineLB.SelectedItems.Count > 1)
ClearControlsFromPanel(PanelUser);
else{
...
После
private void LineLB_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
if (LineLB.SelectedItems.Count > 1){
ClearControlsFromPanel(PanelLine);
LineLB.Focus();
}
else{
...