Я немного осмотрелся и не могу найти ответ о том, как эффективно «переопределить» Control.Enabled в C # WinForms 3.5.
Наша ситуация такова, что у нас есть базовая форма или мастер-форма, которую мы используем, которая добавляет строку состояния внизу и панель инструментов вверху.Эта форма наследуется всеми другими нашими формами, которые затем добавляют элементы управления на центральную панель.
В некоторых формах, которые наследуются от основной базовой формы, мы хотим иметь возможность использовать свойство «Enabled»в форме, но мы хотим иметь возможность переопределить функциональность, чтобы она отключала только центральную панель, а не строку состояния / меню, и поэтому она все еще могла перемещать форму.
Я попытался сделать следующее в главной форме (FrmBaseStatus):
private bool enabled = true;
public new bool Enabled
{
return this.enabled;
}
set
{
this.enabled = value;
this.panelBase.Enabled = value;
}
Однако, очевидно, это не истинное переопределение, и если у нас есть пользовательский элемент управления на базовой панели водна из наших унаследованных форм, и мы хотим переопределить форму из этого пользовательского элемента управления, мы должны сделать что-то вроде:
((FrmBaseStatus)this.ParentForm).Enabled = true;
Есть ли другой способ сделать это, или мы застряли с всегда приведением к нашей базеформа для того, чтобы получить свойство Enabled, которое мы хотим использовать .?
Примечание: будет ли это переопределять событие OnEnabled и не вызывать базовый OnEnabled, или это включение или отключение не выполняется в этом событии Control.OnEnabled()