Значение свойства control.Visible равно false, если форма Windows Forms скрыта. Нормально ли это?
Есть форма с GroupBox, значение свойства Visible которого устанавливается в true (элемент фактически виден пользователю). Форма отображается в виде модального диалога, а после закрытия формы происходит считывание значения свойства Visible:
FormGB frm = new FormGB();
frm.GroupBox.Visible = true;
frm.ShowDialog();
bool vis = frm.GroupBox.Visible; //vis равно false
Является ли нормальным такое поведение Control'a? Например, свойство Enabled не меняет своего состояния при скрытии формы.
Ответы (1 шт):
Автор решения: Alexander Petrov
→ Ссылка
Да, это нормально.
Смотрим исходники свойства Visible.
Внутри вызывается метод GetVisibleCore:
internal virtual bool GetVisibleCore() {
// We are only visible if our parent is visible
if (!GetState(STATE_VISIBLE))
return false;
else if (ParentInternal == null)
return true;
else
return ParentInternal.GetVisibleCore();
}
Комментарий в коде недвусмысленен.