在C#中处理ListBox项目上的双击事件

Han*_*pen 5 c# listbox double-click listboxitem winforms

我在双击ListBox中的项目时尝试做某事.我找到了这样做的代码

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());
            //do your stuff here
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是,当我单击某个项目时,不会触发该事件.如果我在所有项目下方的ListBox中单击,则会触发该事件.

我设置了ListBoxto 的DataSource属性IList<MyObject>.

有任何想法吗?

260*_*986 5

尝试使用带有MouseDown和DoubleClick事件的ListBox创建表单.据我所知,唯一的情况是,当DoubleClick不会触发时,如果在MouseDown中调用MessageBox.Show(...).在其他情况下,它工作正常.

还有一件事,我不确定,如果它很重要,但无论如何.当然,您可以像这样获取项目的索引:

int index = this.listBox1.IndexFromPoint(e.Location);
Run Code Online (Sandbox Code Playgroud)

但这种方式也很好:

if (listBox1.SelectedItem != null)
    ...
Run Code Online (Sandbox Code Playgroud)