日期:2014-05-19  浏览次数:20946 次

高难度问题: 怎样禁止双击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双击消息即可