Строка заголовка дочерней формы Windows MDI

Дочерние формы MDI, когда отображаются, отображают свои строки заголовка на долю секунды. Потом формы загружаются нормально. Есть ли способ загрузки форм без отображения строки заголовка и границы формы. Вот что происходит ...

alt text

alt text


person Thomas    schedule 15.10.2010    source источник


Ответы (2)


Не уверен, что это видно по скриншотам. Но жалоба знакомая. MDI действительно не любит развернутые дочерние окна. Когда вы открываете новое дочернее окно и делаете его также развернутым, оно должно исполняться песнями и танцами. Сначала он восстанавливает текущий дочерний элемент, чтобы он больше не был развернут. Затем создает нового дочернего элемента и устанавливает на нем фокус. Затем максимизирует это. Эти промежуточные шаги видны и могут сильно мерцать, когда рисование ребенка обходится дорого. Ты выглядишь дорого. Вы не можете подавить картину.

Если вы всегда отображаете дочерние окна MDI в развернутом виде, то MDI - неправильная модель формы для использования. Просто используйте простую форму, сделайте дочерние элементы управления «окнами». Вы даже можете спасти свои текущие дочерние формы, установив для их свойства TopLevel значение false, что превратит их в элементы управления. Установите для FormBorderStyle значение None, а для Visible - значение true.

person Hans Passant    schedule 15.10.2010
comment
Спасибо, Ганс, теперь я намного лучше понимаю проблему. Попробую ваши предложения. - person Thomas; 18.10.2010

У меня была эта проблема, даже когда дочернее окно MDI не было развернуто, строка заголовка дочернего элемента на мгновение отображалась при отображении дочерней формы. Я обошел это, установив верх дочерней формы на высоту родительской, чтобы форма не была видна, пока она показывалась. Затем я снова установил верхний край ребенка на 0.

Это работало до тех пор, пока я не попытался закрепить дочерний элемент в родительском элементе, чтобы размер дочернего элемента автоматически изменялся по мере изменения размера родительского элемента. Это вернуло меня на круги своя. На этот раз я решил проблему, добавив скрытую панель к родительскому, установив размер и положение панели в соответствии с размером и положением родительского элемента управления MdiClient, сделав панель видимой непосредственно перед отображением дочернего элемента и скрыв панель, когда это сделано. «Неприятно, но это работает, пока я не найду способ лучше.

person Ron Carter    schedule 21.11.2011