2012-09-09 31 views
0

我寫這樣的:如何使用屬性Control.Enabled = false爲了使所有控件都被陰影化?

this.myTreeView.FullRowSelect = true; 
this.myTreeView.Size = new System.Drawing.Size(170, 300); 

,當我使用這個屬性myTreeView.Enabled = false,就變成這樣:

enter image description here

盯梢只樹區域,但不是所有的控制,如何解決這一問題? (使所有控制都被遮蔽)

+0

這不是一個標準的TreeView控件的樣子。當然,你正在使用DrawMode屬性?使它看起來像一個不使用自定義繪圖的禁用樹視圖,並且您的用戶將停止抱怨。 –

回答

0

什麼:

.... Form() 
{ 
this.InitializeComponent(); 

treeView1.EnabledChanged += (s, o) => 
{ 
    treeView1.BackColor = treeView1.Enabled ? Color.White : SystemColors.Control; 
}; 

.... 

} 
+0

我加了這樣的'this.myTreeView.EnabledChanged + =(s,o)=> ...',並且我得到了警告:'方法'InitializeComponent'中的代碼是由設計者生成的,不應該是手動修改。請刪除所有更改並再次嘗試打開設計器。「我做錯了什麼? –

+1

不要在.designer.cs文件中進行更改 - 在其頂部有一個警告,告訴您不要更改它。直接在.cs文件中進行更改。 – tomfanning

+0

這是正確的.designer.cs文件是自動生成的,所以你的代碼可以被重載,在構造函數中添加代碼,例如更新後的代碼@William – S3ddi9

0

這只是一個效果,但重要的是它會禁用整個控件。事實上,如果你嘗試,例如,滾動條也被禁用。但是你可以嘗試使用卑鄙的手段來達到這種效果:

public class CostumizedTreeView : TreeView { 
    Color defaultBackColor; 
    public CostumizedTreeView() { 
     defaultBackColor = BackColor; 
    } 

    public void Enable(bool Enabled) { 
     this.Enabled = Enabled; 

     if (!Enabled) 
      BackColor = Color.LightGray; 
     else 
      BackColor = defaultBackColor; 
    } 
} 

而被禁用時,做到這一點:

enter image description here


否則,您可以創建使用的DevExpress你自己定製的控制Telerik控件。欲瞭解更多信息look here

相關問題