2011-06-02 48 views
2

我在winforms中有一个treeview。当我双击treenode时,其子节点会消失。再次点击该节点时,它的子节点会得到扩展。任何机构请帮助我。在winforms中停止切换treenode

+0

有双击代码吗? – Reniuz 2011-06-02 11:00:49

回答

4

如果要禁用双击alltogether,您将直接处理WM_LBUTTONDBLCLK(0x0203)。要做到这一点,创建一个MyTreeView控制继承System.Windows.Forms.TreeView并覆盖WndProc(ref Message m)方法。

public class MyTreeView : TreeView 
{ 
    protected override void WndProc(ref Message m) 
    { 
     if (m.Msg == 0x203) { m.Result = IntPtr.Zero; } //Makes the control ignore double licks` 
     else base.WndProc(ref m); 
    }    
}; 

该解决方案将禁用所有TreeView控件的完全双击。如果你能忍受这一点,这个解决方案就可以做到。

+0

Thanx Buddy为你的答案。因为我是视觉工作室的成员,所以我不知道这个代码放在哪里。 – 2011-06-03 10:56:47

+0

@Prakash Kunwar:你必须创建你自己的MyTreeView。正如我在我的答案中显示的那样,创建一个新的'class'并扩展'TreeView':'public class MyTreeView:TreeView {...}'。现在你有一个有气味的类,外观和行为与'TreeView'完全一样。在这个类的内部,你需要重写虚拟的'WndProc(ref Message m)'方法,就像我向你展示的那样。在你的'Form'中添加一个'MyTreeView' ** NOT **一个'TreeView',你就完成了。 VS将在Form desginer的Toolbox中默认显示你在'%project name%Components'下创建的任何控件。只要将它从那里拖到你的表格上就像往常一样。 – InBetween 2011-06-03 11:57:00