回答
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. 雙擊將項目從一個列表框複製到另一個列表框。 Doubleclick事件未觸發。 Winform C#
- 2. 使用單擊\雙擊事件創建asp.net列表框
- 3. 列表視圖雙擊項目
- 4. 列表框項目的事件
- 5. 在C#中的ListBox項目上處理雙擊事件
- 6. 列表視圖雙擊事件
- 7. 雙擊列表框項目打開瀏覽器
- 8. C#Winforms列表框項目
- 9. 雙擊事件
- 10. 雙擊事件
- 11. 列表框不可點擊的項目
- 12. jquery點擊事件下拉列表項
- 13. C#的WinForm Datagrid中雙擊事件
- 14. 的QGraphicsView雙擊事件和ScrollHandDrag模式項目問題
- 15. 使用MVVM從WPF ListView項目中觸發雙擊事件
- 16. 動態更改列表框選項,點擊某些事件
- 17. C#查詢更新從gridview雙擊事件的文本框值
- 18. 如何在列表框中插入一個新項目,然後在列表框中設置焦點在C#中按鈕單擊事件的新項目#
- 19. 雙擊TreeViewer列標題的事件?
- 20. DevExpress DXGrid列標題雙擊事件
- 21. 在列表項目符號圖像上分配點擊事件
- 22. C#列表框組選擇的項目
- 23. 在列表框中克隆項目c#
- 24. 列表框不顯示項目C#XAML
- 25. 從c列表框中打印項目#
- 26. C#列表框更新項目更改
- 27. C#列表框選擇項目
- 28. c#列表框項目大小限制
- 29. C#WPF TreeView中最後一個子項的雙擊的事件
- 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