关于右键菜单 不好用的一个解决方案
2010-03-31 16:54
211 查看
这是我之前遇到的一个问题
给treelist加了一个右键菜单,具体事件写在了mouseClick里面了,
可是左键点击可以出发这个事件,右键点击不能触发这个事件,就直接导致右键菜单的处理操作没办法执行,后来看了下里面的代码,大概是什么变空了,右键触发被直接过滤掉,
解决方案:使用事件mousedown来实现右键菜单的相关改变操作就可以了,这个不会因为那个值为null而被过滤掉,
不过一定要注意以下几个地方
边界的判断
/// <summary>
/// 鼠标按下事件
/// </summary>
private void treeDepartment_MouseDown(object sender, MouseEventArgs e)
{
TreeListHitInfo hitInfo = this.CalcHitInfo(e.Location);
this.FocusedNode = hitInfo.Node;
if(hitInfo.HitInfoType==HitInfoType.Cell ||hitInfo .HitInfoType ==HitInfoType .SelectImage)
}
HitInfoType中还有很多属性,想了解的话,可以自己看下哈
左右键的判断
mouseButtons.left==e.buttons
给treelist加了一个右键菜单,具体事件写在了mouseClick里面了,
可是左键点击可以出发这个事件,右键点击不能触发这个事件,就直接导致右键菜单的处理操作没办法执行,后来看了下里面的代码,大概是什么变空了,右键触发被直接过滤掉,
解决方案:使用事件mousedown来实现右键菜单的相关改变操作就可以了,这个不会因为那个值为null而被过滤掉,
不过一定要注意以下几个地方
边界的判断
/// <summary>
/// 鼠标按下事件
/// </summary>
private void treeDepartment_MouseDown(object sender, MouseEventArgs e)
{
TreeListHitInfo hitInfo = this.CalcHitInfo(e.Location);
this.FocusedNode = hitInfo.Node;
if(hitInfo.HitInfoType==HitInfoType.Cell ||hitInfo .HitInfoType ==HitInfoType .SelectImage)
}
HitInfoType中还有很多属性,想了解的话,可以自己看下哈
左右键的判断
mouseButtons.left==e.buttons
相关文章推荐
- 关于QT系统托盘右键菜单的补充
- ASP.NET ImageButton/Image 控件关于border的一个诡异的BUG及其解决方案
- 征集CTreeCtrl继承类右键菜单问题解决方案:使用LoadMenu方式弹出菜单为菜单左侧竖条
- 关于使用Asp.net导出Excel,遭遇“LinkButton必须放在一个具有runat=server的标签的Form”的解决方案。
- 解决win7系统,在桌面空白处单击鼠标右键,箭头旁会出现一个蓝色的圈,长时间等待之后才出现菜单
- 关于Unity中的Animator使用animator.Play()不能重复播放同一个Animatoin的解决方案
- 转一个右键菜单,支持不同对象不同菜单,兼容IE、Firefox
- 关于更换JDK后启动Eclipse时提示版本过低的一个解决方案
- JS组件系列——Bootstrap右键菜单解决方案:ContextMenu
- 一个轻量级的XHTML右键菜单[支持IE和firefox]
- 给超链接自定义一个右键菜单
- 让一个程序托盘显示,并且右键托盘图标可以弹出菜单
- 关于FlexPaper 2.1.2版本 二次开发 Logo 、打印、搜索、缩略图、添加按钮、js交互、右键菜单等相关问题
- 关于使用repo时repo init和repo sync失败的一个解决方案
- 关于《创建组件**失败。错误消息为**未能加载文件或程序集**或它的某一个依赖。系统找不到指定文件。》的解决方案
- [转]关于数据库的并发性的一个解决方案
- 学习 Message(5): 关于 TApplicationEvents.OnMessage 的第二个参数 可以屏蔽 TWebBrowser右键菜单:
- 关于.NET中pictureBox右键菜单的屏蔽
- c#+Winform实现自定义的“复制、粘贴”右键快捷菜单,多个控件共享使用一个右键菜单。
- 关于jstree自定义右键菜单的使用