在网上看到一段双击时屏蔽树节点的展开与收拢代码 ,后来测试了一下,发现有BUG。
在先选中一个节点后,再点击该节点旁边的"+"号时,该节点就不会展开或收拢了。正好有空就在该代码上进行了一点修改,以修正该BUG。
代码如下:
private bool expandCollapse;
treeView.BeforeExpand += new TreeViewCancelEventHandler(treeView_BeforeExpand);
treeView.BeforeCollapse += new TreeViewCancelEventHandler(treeView_BeforeCollapse);
treeView.MouseDown += new MouseEventHandler(treeView_MouseDown);
private void treeView_MouseDown(object sender,MouseEventArgs e)
{
TreeNode node = treeView.GetNodeAt(e.X,e.Y);
expandCollapse = (node!=null && node.Bounds.Contains(e.X,e.Y);
}
private void treeView_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = expandCollapse;
expandCollapse = false;
}
private void treeView1_BeforeCollapse(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = expandCollapse;
expandCollapse = false;
}
treeView.BeforeExpand += new TreeViewCancelEventHandler(treeView_BeforeExpand);
treeView.BeforeCollapse += new TreeViewCancelEventHandler(treeView_BeforeCollapse);
treeView.MouseDown += new MouseEventHandler(treeView_MouseDown);
private void treeView_MouseDown(object sender,MouseEventArgs e)
{
TreeNode node = treeView.GetNodeAt(e.X,e.Y);
expandCollapse = (node!=null && node.Bounds.Contains(e.X,e.Y);
}
private void treeView_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = expandCollapse;
expandCollapse = false;
}
private void treeView1_BeforeCollapse(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = expandCollapse;
expandCollapse = false;
}
最终的正确版本:http://blog.csdn.net/yzg100/archive/2007/05/01/1594044.aspx