WinForms UserControl如何停止控件接收焦点

时间:2011-11-07 13:22:21

标签: c# vb.net winforms user-controls

我的自定义UserControl只包含一个TextBox

当我将控件设置为Enabled = False时,TextBox被禁用但控件不是(控件仍会触发Enter事件)。

如何确保UserControl无法获得焦点?

我启用的属性如下所示:

Private _Enabled As Boolean = True

Public Shadows Property Enabled As Boolean
    Get
        Return _Enabled
    End Get
    Set(value As Boolean)
        _Enabled = value
        txtTime.Enabled = value
    End Set
End Property

2 个答案:

答案 0 :(得分:3)

要回答您的直接问题,您需要将enabled属性传递给基础对象:

public new bool Enabled {
    get { return _Enabled; }
    set {
        _Enabled = value;
        textBox1.Enabled = value;
        base.Enabled = value;
    }
}

但是......正确的方法是使用OnEnabledChanged覆盖:

protected override void OnEnabledChanged(EventArgs e) {
    textBox1.Enabled = this.Enabled;
    base.OnEnabledChanged(e);
}

(当你标记C#时,我假设你可以自己转换回VB.net)

答案 1 :(得分:2)

每个控件都有一个名为Enabled的属性。您无需创建自己的属性即可。

此属性继承自Control类,它是每个Windows窗体控件的基础。

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.aspx