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