【DevExpress】老版TreeList和GridControl 中控件 MouseWheel事件禁用解决方法
2013-02-27 16:26
621 查看
期望目标:TreeList和GridControl中禁用鼠标MouseWheel事件对控件值的更改。
处理思路:在TreeList_ShownEditor事件中,增加对ActiveEditor的MouseWheel事件处理,禁用掉即可。
遇到问题:老版DevExpress中对ActiveEditor.MouseWheel的Handle=true无效。
参加官方问题地址 http://www.devexpress.com/Support/Center/Question/Details/Q148215
解决方法:
既然无法禁用值的改变,那就从改变后恢复着手。代码如下:
处理思路:在TreeList_ShownEditor事件中,增加对ActiveEditor的MouseWheel事件处理,禁用掉即可。
遇到问题:老版DevExpress中对ActiveEditor.MouseWheel的Handle=true无效。
参加官方问题地址 http://www.devexpress.com/Support/Center/Question/Details/Q148215
解决方法:
既然无法禁用值的改变,那就从改变后恢复着手。代码如下:
Private activeEditor As DevExpress.XtraEditors.BaseEdit = Nothing '当前编辑控件 Private isMouseWheelChanged As Boolean = False '是否为鼠标滚轮滚动改变 Private oActiveEditorOldValue As Object = Nothing '初始值 Private Sub TreeList_ShownEditor(ByVal sender As System.Object, ByVal e As System.EventArgs) activeEditor = m_tree.ActiveEditor oActiveEditorOldValue = activeEditor.EditValue AddHandler activeEditor.MouseWheel, AddressOf ActiveEditor_MouseWheel AddHandler activeEditor.EditValueChanging, AddressOf ActiveEditor_EditValueChanging End Sub Private Sub TreeList_HiddenEditor(ByVal sender As Object, ByVal e As System.EventArgs) If activeEditor IsNot Nothing Then isMouseWheelChanged = False oActiveEditorOldValue = Nothing End If End Sub ’出自 http://caryliu.cnblogs.com Private Sub ActiveEditor_MouseWheel(ByVal sender As System.Object, ByVal e As MouseEventArgs) isMouseWheelChanged = True If oActiveEditorOldValue IsNot Nothing Then Try RemoveHandler activeEditor.EditValueChanging, AddressOf ActiveEditor_EditValueChanging activeEditor.EditValue = oActiveEditorOldValue Catch ex As Exception Finally AddHandler activeEditor.EditValueChanging, AddressOf ActiveEditor_EditValueChanging End Try End If '转化为列表滚动 Dim scrollLines As Integer = SystemInformation.MouseWheelScrollLines If (scrollLines = -1) Then scrollLines = m_tree.ViewInfo.VisibleRowCount m_tree.TopVisibleNodeIndex += IIf(e.Delta > 0, -scrollLines, scrollLines) End Sub Private Sub ActiveEditor_EditValueChanging(ByVal sender As System.Object, ByVal e As DevExpress.XtraEditors.Controls.ChangingEventArgs) If isMouseWheelChanged Then e.Cancel = True Exit Sub End If oActiveEditorOldValue = e.OldValue End Sub
相关文章推荐
- 解决c# devexpress treelist 控件显示大红叉
- 禁用LIST控件的键盘事件.学习重写方法.
- DevExpress TreeList 常见问题解决方法
- DevExpress实现禁用TreeListNode CheckBox的方法
- DevExpress控件TreeList的复选框
- 关于 ExtAspNet 控件 Tree 嵌套在 Region Panel 内 OnNodeCommand 无响应的问题解决方法
- 使用DevExpress的TreeList控件的效果和实现代码
- 在有TabHost控件的页面,解决onKeyDown方法不能拦截KeyEvent.KEYCODE_BACK事件
- 第三方控件DevExpress的TreeList绑定XML文件
- C# DevExpress 的gridControl或gridView数据导出失败解决方法
- Flex中将wmode设置为Opaque或Transparent时,鼠标滑轮mouseWheel事件失效的解决方法。
- 第三方控件DevExpress的TreeList绑定XML文件
- WPF 引用 DevExpress控件调用时 一般本机用没有问题其他机器不行解决方法
- DevExpress控件虚拟树VirtualTreeListData使用
- 认为Devexpress TreeList控件的Bug...
- 我的Android进阶之旅------>Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法
- DevExpress XtraTreeList的复选框 禁用
- DevExpress控件使用(ImageCollection,TreeList)
- DevExpress控件使用系列--ASPxTreeList
- DevExpress实现TreeList按条件隐藏节点CheckBox的方法