右键单击以选择ListBox中的项目

Ipq*_*arx 22 c# select listbox right-click winforms

我正在尝试制作一个项目列表,您可以通过右键单击并启用上下文菜单来执行多项操作.我已经完成了,没有任何问题.

但我想拥有它,以便当您右键单击某个项目而不是选择当前项目时,选择鼠标所在的项目.

我已经研究了这个和其他相关的问题,并且我尝试使用indexFromPoint(我通过我的研究发现),但每当我右键单击某个项目时,它总是只清除所选项目并且不显示上下文菜单,因为我设置它,以便它没有出现,如果没有选定的项目.

这是我目前使用的代码:

ListBox.SelectedIndex = ListBox.IndexFromPoint(Cursor.Position.X, Cursor.Position.Y);
Run Code Online (Sandbox Code Playgroud)

dem*_*key 35

处理ListBox.MouseDown并选择那里的项目.像这样:

private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
    listBox1.SelectedIndex = listBox1.IndexFromPoint(e.X, e.Y);
}
Run Code Online (Sandbox Code Playgroud)

  • 如果上下文菜单已经绑定到列表框,只需使用:private void listBoxItems_MouseDown(object sender,MouseEventArgs e){listBoxItems.SelectedIndex = listBoxItems.IndexFromPoint(eX,eY); } (4认同)

Nar*_*yal 9

这一个正在......

this.ListBox.MouseUp += new System.Windows.Forms.MouseEventHandler(this.List_RightClick);

private void List_RightClick(object sender, MouseEventArgs e)
{

    if (e.Button == MouseButtons.Right)
    {
        int index = this.listBox.IndexFromPoint(e.Location);
        if (index != ListBox.NoMatches)
        {
            listBox.Items[index];
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

  • 奇怪的是,单击事件似乎没有捕获右键或中间按钮。必须使用 MouseUp 来捕捉它们.. (2认同)