Listbox添加右键菜单

本文介绍如何在Visual Studio的ListBox控件中实现右键弹出菜单功能。通过设置ListBox的ContextMenuTrip属性并编程其MouseUp事件,可以实现自定义的右键菜单。此外,还介绍了如何使用ContextMenuStrip控件添加菜单项以及如何通过SourceControl属性获取关联的ListBox控件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://www.cnblogs.com/netlyf/archive/2011/04/04/2005155.html

在Visual Studio窗口里增加一个ListBox和ContextMenuTrip,把ListBox的ContextMenuTrip设置成“(无)”,也就是不要和ContextMenuTrip控件关联,然后对ListBox的MouseUp事件编程。

private void listBox1_MouseUp(object sender, MouseEventArgs e)
{
  if (e.Button == MouseButtons.Right)
  {
    int posindex = listBox1.IndexFromPoint(new Point(e.X, e.Y));
listBox1.ContextMenuStrip = null;
if (posindex >= 0 && posindex < listBox1.Items.Count)
{
listBox1.SelectedIndex = posindex;
contextMenuStrip1.Show(listBox1,new Point(e.X,e.Y));
}
}
listBox1.Refresh();
}

注:ContextMenuStrip 控件提供了与某个控件关联的快捷菜单。也就是说通过这个控件可以方便的实现在别的控件上弹出右键快捷菜单。

我给你个例子:

1、先添加一个ContextMenuStrip 控件到Form上
2、设置目标控件(如窗体、文本框等)的ContextMenuStrip属性,指向你刚才添加的ContextMenuStrip 控件。这样就实现了两者的关联。
3、动态将一些菜单项添加到 ContextMenuStrip 控件中,如:

//上下文菜单项 ContextMenuStrip1.Items.Add(msEditNew); ContextMenuStrip1.Items.Add(msEditBar1); ContextMenuStrip1.Items.Add(msEditCut); ContextMenuStrip1.Items.Add(msEditPaste); ContextMenuStrip1.Items.Add(msEditDelete); ContextMenuStrip1.Items.Add(msEditBar2); 这样就OK了,你在目标控件上按右键时将弹出快捷菜单。

注:获得ContextMenuStrip的关联控件,可以用SourceControl属性得到,该属性获取使此ContextMenuStrip 被显示的控件。如下例:

private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
 {
      ListBox listbox = contextMenuStrip1.SourceControl as ListBox;//获取contextMenuStrip的关联控件
      int i = listbox.SelectedIndex;
      listbox.Items.Remove(listbox.Items[i]);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值