回答
void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
{
int index = this.listBox1.IndexFromPoint(e.Location);
if (index != System.Windows.Forms.ListBox.NoMatches)
{
MessageBox.Show(index.ToString());
}
}
這應該工作...檢查
的WinForms
添加事件處理程序爲Control.DoubleClick
事件爲您ListBox
,並在該事件處理程序打開一個MessageBox
顯示所選擇的項目。
例如爲:
private void ListBox1_DoubleClick(object sender, EventArgs e)
{
if (ListBox1.SelectedItem != null)
{
MessageBox.Show(ListBox1.SelectedItem.ToString());
}
}
哪裏ListBox1
是你ListBox
的名稱。
請注意,您將事件處理函數分配是這樣的:
ListBox1.DoubleClick += new EventHandler(ListBox1_DoubleClick);
WPF
差不多與上面相同,但你會使用MouseDoubleClick
event代替:
ListBox1.MouseDoubleClick += new RoutedEventHandler(ListBox1_MouseDoubleClick);
而事件處理程序:
private void ListBox1_MouseDoubleClick(object sender, RoutedEventArgs e)
{
if (ListBox1.SelectedItem != null)
{
MessageBox.Show(ListBox1.SelectedItem.ToString());
}
}
編輯:Sisya's answer檢查,看是否發生了一個項目,這將需要納入此代碼來解決的意見(中提到的問題,顯示消息框,如果列表框是雙擊雙擊而一個項目被選中,但沒有點擊一個項目)。
希望這會有所幫助!
對於的WinForms
private void listBox1_DoubleClick(object sender, MouseEventArgs e)
{
int index = this.listBox1.IndexFromPoint(e.Location);
if (index != System.Windows.Forms.ListBox.NoMatches)
{
MessageBox.Show(listBox1.SelectedItem.ToString());
}
}
和
public Form()
{
InitializeComponent();
listBox1.MouseDoubleClick += new MouseEventHandler(listBox1_DoubleClick);
}
也應防止因爲如果你選擇一個項目,然後事件觸發點擊一個空白區域。
我知道這個問題很老,但我也在尋找解決這個問題的方法。公認的解決方案是爲WinForms而不是WPF,我認爲很多來這裏的人都在尋找。
爲尋找一個WPF解決方案,這裏是一個偉大的方式(通過奧斯卡的答案here):
private void myListBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
DependencyObject obj = (DependencyObject)e.OriginalSource;
while (obj != null && obj != myListBox)
{
if (obj.GetType() == typeof(ListBoxItem))
{
// Do something
break;
}
obj = VisualTreeHelper.GetParent(obj);
}
}
基本上,你走了的VisualTree直到你要麼找到父項是是一個ListBoxItem,或者你上升到實際的ListBox(因此沒有單擊一個ListBoxItem)。
*** NET中不工作*** *** *** – 2016-11-26 09:56:50
我告訴你使用Visual Studio,
你可以爲你想要 是在列表框屬性 - > 動作 - >的AutoPostBack將其更改爲「真」同樣resualt做什麼。
希望這將有助於
- 1. Flex4列表項雙擊事件
- 2. 雙擊將項目從一個列表框複製到另一個列表框。 Doubleclick事件未觸發。 Winform C#
- 3. 列表視圖項目單擊事件
- 4. 列表項雙擊
- 5. 使用單擊\雙擊事件創建asp.net列表框
- 6. 列表框項目的事件
- 7. 列表視圖雙擊項目
- 8. 拖放列表 - 雙擊刪除項目
- 9. 在C#中的ListBox項目上處理雙擊事件
- 10. Visual C#:如何將單擊事件附加到列表框中的項目?
- 11. C#雙擊按鈕事件
- 12. 列表視圖雙擊事件
- 13. Delphi在列表框中雙擊時更改項目背景
- 14. 如何使用MVVM雙擊列表框項目上的命令?
- 15. 雙擊列表框項目打開瀏覽器
- 16. MVVM - 選擇列表框中的項目,雙擊並加粗
- 17. 處理列表視圖項目內的項目單擊事件
- 18. C#Winforms列表框項目
- 19. 圖片框,雙擊和單擊事件
- 20. 訪問雙擊事件以在列表框中打開查詢
- 21. 如何將雙擊鼠標事件添加到列表框?
- 22. 雙擊事件無法在Internet Explorer工作選項列表
- 23. 雙擊列表視圖項目時獲取選定項目
- 24. 點擊列表項目也點擊項目內的複選框
- 25. 雙擊事件
- 26. 雙擊事件
- 27. 列表框不可點擊的項目
- 28. 單擊列表框項目更改WP7
- 29. 列表視圖框,雙擊文本框
- 30. 使用消息框確定按鈕從列表框中刪除雙擊項目?
'e.Location'!?!?!? 你確定有這種方法嗎? 視覺工作室沒有建議我按ctrl +空格這個方法! – 2013-04-28 23:29:07
@Milas:我被同樣的問題難倒了。確保你使用的是MouseDoubleClick事件(因此也就是MouseEventArgs),而不是Doubleclick(它只有EventArgs)。 – winwaed 2013-11-06 16:58:25
爲什麼不使用'SelectedItem'? – Jack 2016-05-07 20:33:52