Значение свойства 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();
}

Комментарий в коде недвусмысленен.

→ Ссылка