高难度问题: 怎样禁止双击treeview节点时自动展开或者折叠的行为
双击treeview节点时,
禁止自动展开或者折叠
那个beforexpand或者beforecollapse事件根本没有catch到..
------解决方案--------------------有难度,帮顶
------解决方案--------------------UP
------解决方案--------------------private void treeView1_AfterExpand(object sender, TreeViewEventArgs e)
{
this.treeView1.Nodes[0].Collapse();
}
------解决方案--------------------UP~
------解决方案--------------------在TreeView的Double_Click事件中
判断节点的状态:如展开,则折叠;如折叠,则展开。(反正就是再执行一次相反的操作)
------解决方案--------------------只是有点闪。
根据实际功能,更换为其它控件!..
------解决方案--------------------采用TreeView的Double_Click事件来处理,也可以用beforexpand事件,不过要判断当前鼠标的状态,有点困难
------解决方案--------------------不如干脆不用TreeView
------解决方案--------------------把以前的思维反过来就ok吧?
void Data_Bound(Object sender, TreeNodeEventArgs e)
{
if(e.Node.Depth == 1)
{
// Expand the node using the Expand method.
e.Node.Collapse();
}
else
{
e.Node.Expand();
}
}
------解决方案--------------------有难度...
楼上说的逆向操作,估计不是楼主想要的
------解决方案--------------------在WndProc函数里把WM_NOTIFY中的TVN_ITEMEXPANDING,TVN_ITEMEXPANDED 试试.
------解决方案--------------------如果仅仅是不让展开好办:
private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = true;
}
就可以了,但是我觉得楼主应该是还想让点+时能点开,只是屏蔽双击吧?
------解决方案--------------------重写WndProc ( ref System.Windows.Forms.Message m )
拦截treeView1双击消息即可