2011-06-17 77 views

回答

4

您可以處理ListBoxMouseLeftButtonDownKeyDown事件。對於KeyDown事件,您需要檢查EventArgs以確定是否按下了Enter鍵(而不是其他任何鍵)。

即使未選擇某個項目(例如,如果用戶在ListBox內部點擊但未在實際項目上點擊),這些事件也會觸發,因此在您的事件處理程序中您應該檢查此事件。

你的事件處理程序可能是這個樣子:

public void MyListBox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    ItemSelected(); 
} 

public void MyListBox_KeyDown(object sender, KeyEventArgs e) 
{ 
    if ((e.Key & Key.Enter) == Key.Enter) 
    { 
     ItemSelected(); 
    } 
} 

public void ItemSelected() 
{ 
    if (MyListBox.SelectedItem != null) 
    { 
     // Handle item selection here 
    } 
} 

這些都是從我的頭頂,所以你可能需要稍微調整這些讓他們的工作完全正確。希望你看到一般的想法。


另一種方式來做到這將是填充ListBox與項目(使用「-=」語法)時,只需刪除SelectionChanged事件處理程序,然後重新裝一次這個操作完成。

我建議這樣做(因爲你擔心事件發生時,列表填充)。它不會阻止用戶使用向上和向下箭頭鍵選擇項目,但除非你有這樣一個真正充分的理由,否則你會使事情變得不必要的不​​方便(用戶不希望被任意限制,應該工作)。

相關問題