如何停止控件接收焦点

本文关键字:焦点 控件 何停止 | 更新日期: 2023-09-27 18:13:38

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

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

我如何确保UserControl不会收到焦点?

我的Enabled属性看起来像这样:

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

如何停止控件接收焦点

要回答您的直接问题,您需要将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)

每个控件都有一个名为Enabled的属性。你不需要创建自己的属性。

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

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