TreeView双击节点而不改变节点的折叠/展开状态
2013-08-26 10:54
357 查看
这是C#的一个漏洞,Microsoft在TreeView控件中自作主张地做成双击节点时自动展开/折叠节点。然而如果用户自定义NodeMouseDoubleClick事件,同时又不希望改变结点的展开/折叠状态,就无法直接达到这一效果。可以通过曲线救国的方式达到了目的。
首先声明一个全局变量:
public int m_MouseClicks = 0; //记录鼠标在myTreeView控件上按下的次数
再分别重载三个事件:
//获取鼠标在myTreeView控件按下的次数,并赋给全局变量m_MouseClicks
private void myTreeView_MouseDown(object sender, MouseEventArgs e)
{
this.m_MouseClicks = e.Clicks;
}
//myTreeView控件节点折叠之前判断鼠标按下的次数,并进行控制
private void myTreeView_BeforeCollapse(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = (this.m_MouseClicks > 1);
}
//myTreeView控件节点折叠之前判断鼠标按下的次数,并进行控制
private void myTreeView_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = (this.m_MouseClicks > 1);
}
有点绕弯,也是没有办法中的办法。
首先声明一个全局变量:
public int m_MouseClicks = 0; //记录鼠标在myTreeView控件上按下的次数
再分别重载三个事件:
//获取鼠标在myTreeView控件按下的次数,并赋给全局变量m_MouseClicks
private void myTreeView_MouseDown(object sender, MouseEventArgs e)
{
this.m_MouseClicks = e.Clicks;
}
//myTreeView控件节点折叠之前判断鼠标按下的次数,并进行控制
private void myTreeView_BeforeCollapse(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = (this.m_MouseClicks > 1);
}
//myTreeView控件节点折叠之前判断鼠标按下的次数,并进行控制
private void myTreeView_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = (this.m_MouseClicks > 1);
}
有点绕弯,也是没有办法中的办法。
相关文章推荐
- 如何在C#的TreeView控件中双击节点而不改变节点的展开/折叠状态
- 双击treeView的节点时使不展开不折叠子节点
- 双击treeView的节点时使不展开不折叠子节点
- 双击treeView的节点时使不展开不折叠子节点
- winform如何保持TreeView节点展开和折叠的状态
- 使用JavaScript展开/折叠TreeView中所有节点
- visjs关系图-双击折叠展开子节点(隐藏显示子节点)以及位置自定义
- TreeView展开一个节点后,折叠其它节点
- 使用userdata保持TreeView展开/折叠状态
- TreeView保存当前节点展开状态
- 如何获取树节点目前是折叠还是展开状态
- TreeView 双击不展开节点
- treeview 控件点击父节点所有子节点全部展开代码,改变部分节点颜色
- easyui tree文本单击事件切换展开/折叠节点的状态
- TreeView展开一个节点后,折叠其它节点
- treeview 展开选中节点,收缩同级节点(可以改变展开和收缩的图标)
- (JavaScript)实现在客户端动态改变Treeview节点的选中状态
- 使用JavaScript展开/折叠TreeView中所有节点(Expand and Collapse All Nodes of asp.net Treeview on the client with javascript)
- TreeView保存当前节点展开状态【Draft Saved】
- 实现当TreeView中父节点的CheckBox的点选状态改变时,回发服务器端,并且选中父节点,所有子节点全选中