繁体   English   中英

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

[英]WinForms UserControl How Do I Stop the control receiving focus

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

当我将控件设置为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

要回答您的直接问题,您需要将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类继承的, Control类是每个Windows窗体控件的基础。

http://msdn.microsoft.com/zh-CN/library/system.windows.forms.control.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM