如何使用属性Control.Enabled = false以使所有控件都被遮蔽?

时间:2012-09-09 21:13:09

标签: c# .net winforms controls

我是这样写的:

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

当我使用这个属性myTreeView.Enabled = false时,它就像这样:

enter image description here

仅阴影树区域,但不是所有控件,如何修复此问题? (使所有控件都被遮蔽)

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

怎么样:

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

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

....

}