回答
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