显示ListView中项目的上下文菜单

Daa*_*sin 24 c# winforms

现在,拜托,我知道如何在我右键单击listView时弹出一个contextMenu,我想要的是当我右键单击一个项目时弹出它.我正在尝试制作聊天服务器和客户端,现在......现在我想在我右键单击连接的客户端项目时查看客户端信息.现在我该怎么做?

谢谢!

Ras*_*bel 63

private void listView1_MouseClick(object sender, MouseEventArgs e)
{            
    if (e.Button == MouseButtons.Right)
    {
        if (listView1.FocusedItem.Bounds.Contains(e.Location))
        {
            contextMenuStrip1.Show(Cursor.Position);
        }
    } 
}
Run Code Online (Sandbox Code Playgroud)

您可以将连接的客户端信息放在contextMenuStrip1中.当您右键单击某个项目时,您可以显示该contextMenuStrip1中的信息.

  • 如果列表中没有项目,则放置附加条件以避免异常(LV_Input.FocusedItem!= null && LV_Input.FocusedItem.Bounds.Contains(e.Location)== true) (4认同)
  • 我认为这应该是默认行为,但是哦.它真的是一个简单,整洁的代码. (2认同)

Mar*_*all 8

您将不得不使用ListViews上下文菜单,但根据您右键单击的ListView项目进行更改.

private void listView1_MouseDown(object sender, MouseEventArgs e)
{
    bool match = false;

    if (e.Button == System.Windows.Forms.MouseButtons.Right)
    {
        foreach (ListViewItem item in listView1.Items)
        {
            if (item.Bounds.Contains(new Point(e.X, e.Y)))
            {
                MenuItem[] mi = new MenuItem[] { new MenuItem("Hello"), new MenuItem("World"), new MenuItem(item.Name) };
                listView1.ContextMenu = new ContextMenu(mi);
                match = true;
                break;
            }
        }
        if (match)
        {
            listView1.ContextMenu.Show(listView1, new Point(e.X, e.Y));
        }
        else
        {
            //Show listViews context menu
        }

    }

}
Run Code Online (Sandbox Code Playgroud)