2011-06-02 28 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