ListView右键功能:如何屏蔽右键选择,只允许右键菜单?

还不够格啊 2013-03-01 02:10:06
WinForm ListView: 模式设置为Details。

默认的右键功能有两个,按照事件顺序依次为:
1.选择新的项
2.弹出右键菜单

现在我要实现:屏蔽右键选择新项的功能,但需要右键弹出菜单的功能。即在ListView内点击右键时,不改变当前选择项,只弹出右键菜单。

请用代码实现。
...全文
470 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq672500286 2013-03-05
  • 打赏
  • 举报
回复
datagridview点右键就不会改变选中行
qldsrx 2013-03-05
  • 打赏
  • 举报
回复
引用 10 楼 bebeing 的回复:
引用 9 楼 qldsrx 的回复:右键菜单可以通过代码方式弹出,使用ContextMenu.Show 方法 没看清我的问题啊。。。
你难道不是要弹出右键菜单吗?这样写有问题吗? protected override void DefWndProc(ref Message m) { switch (m.Msg) { case 0x0204: //Rright Button Down ContextMenu.Show(....); break; default: base.DefWndProc(ref m); break; } }
还不够格啊 2013-03-05
  • 打赏
  • 举报
回复
引用 9 楼 qldsrx 的回复:
右键菜单可以通过代码方式弹出,使用ContextMenu.Show 方法
没看清我的问题啊。。。
qldsrx 2013-03-05
  • 打赏
  • 举报
回复
右键菜单可以通过代码方式弹出,使用ContextMenu.Show 方法
还不够格啊 2013-03-05
  • 打赏
  • 举报
回复
重载了DefWndProc,但只有WM_RBUTTONDOWN能被拦截,其他如WM_RBUTTONUP根本不能被拦截啊。 禁止掉WM_RBUTTONDOWN后,右键菜单也不能弹出了。 protected override void DefWndProc(ref Message m) { switch (m.Msg) { case 0x0204: //Rright Button Down break; case 0x0205: //Right Button Up break; case 0x007b: //Context Menu break; default: base.DefWndProc(ref m); break; } }
qldsrx 2013-03-01
  • 打赏
  • 举报
回复
网上找的消息代码,没验证过:
引用
代码--------16进制值----- 对应键 VK_LBUTTON---- 01-------- 鼠标左按钮 VK_RBUTTON---- 02-------- 鼠标右按钮 VK_MBUTTON---- 04-------- 鼠标中按钮
然后是继承ListView类,重写WndProc
protected override void WndProc( ref Message message )
{
    const int VK_RBUTTON = 0x2;

    if(message.Msg == VK_RBUTTON )
    {
        //弹出你的右键菜单
    }
    else
    {
        base.WndProc(ref message);//默认的消息处理
    }
}
这样就拦截了鼠标右键的消息,只处理你想要的操作。
qldsrx 2013-03-01
  • 打赏
  • 举报
回复
感觉你不重写ListView.WndProc是做不到的了。
还不够格啊 2013-03-01
  • 打赏
  • 举报
回复
引用 4 楼 lye2000000_super 的回复:
重写右键点击事件试试
试过不成功。
  • 打赏
  • 举报
回复
重写右键点击事件试试
还不够格啊 2013-03-01
  • 打赏
  • 举报
回复
引用 2 楼 jianqiangking 的回复:
ListView有一个ContextMenuStrip属性, 将该属性设为你拖的ContextMenuStrip控件。
我要屏蔽右键选择功能。右键菜单不是问题。
熊猫大虾 2013-03-01
  • 打赏
  • 举报
回复
ListView有一个ContextMenuStrip属性, 将该属性设为你拖的ContextMenuStrip控件。
我是小李 2013-03-01
  • 打赏
  • 举报
回复
可以直接使用ContextMenuStrip控件。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧