c#,怎么实现右击空白处时,不显示右键菜单?

在一个treeview中,右键空白处也会显示右键菜单。我想要的是只有选中treeviewList中的节点时才会显示右键菜单,要怎么做?请详细一点!谢谢!... 在一个treeview中,右键空白处也会显示右键菜单。我想要的是只有选中treeviewList中的节点时才会显示右键菜单,要怎么做?请详细一点!谢谢! 展开
 我来答
帐号已注销
2013-03-18 · TA获得超过2184个赞
知道小有建树答主
回答量:631
采纳率:100%
帮助的人:644万
展开全部
这个比较难。我也只能提供大概思路。
在treeview的右键事件中,
1、如果没有选中节点,截获Windows消息,不产生菜单。
2、如果有选中节点,计算节点在屏幕上占用区域
3、判断鼠标的屏幕位置是否在此区域内。
4、截获Windows消息,决定是否显示菜单。
完全达到你的要求很麻烦,
狮是搞完泪18
2013-03-18 · TA获得超过270个赞
知道小有建树答主
回答量:257
采纳率:0%
帮助的人:259万
展开全部
  可以通过鼠标点击的位置,判断点击的区域,判断是否弹出右键菜单,以下是我测试代码,希望对你有所帮助,重写TreeView的WndProc函数
  public class MyTreeView : TreeView
  {
   private const int WM_RBUTTONDOWN = 0x0204;

   protected override void WndProc(ref Message m)
   {
   if (m.Msg == WM_RBUTTONDOWN)
   {
   int nX = (int)m.LParam & 0xFFFF;//取得鼠标点击的X坐标
   int nY = (int)m.LParam >> 16 & 0xFFFF;//取得鼠标点击的Y坐标
   //判断是否点击在Node上面
   if (HitTest(nX, nY).Location != TreeViewHitTestLocations.Label)
   {
   return;
   }
   }
   base.WndProc(ref m);
   }
  }
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
说涛5V
2013-03-18 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:136
采纳率:0%
帮助的人:96.4万
展开全部
你判断一下有没有选中就行了嘛
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式