WinForms UserControl Как остановить фокус получения элемента управления - PullRequest
1 голос
/ 07 ноября 2011

У меня есть пользовательский 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 ]

3 голосов
/ 07 ноября 2011

Чтобы ответить на ваш ближайший вопрос, вам нужно передать свойство 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 самостоятельно)

2 голосов
/ 07 ноября 2011

У каждого элемента управления уже есть свойство с именем Enabled.Для этого не нужно создавать собственное свойство.

Это свойство унаследовано от класса Control, который является базой для каждого элемента управления форм Windows.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...