C # - Как бороться с 2 "TopMost" формы? - PullRequest
4 голосов
/ 27 октября 2009

У меня есть родительская форма, которая установлена ​​как TopMost, а затем у меня есть другая форма, которая открывается при нажатии кнопки. Эта дочерняя форма также установлена ​​как TopMost. Первая проблема, с которой я столкнулся, заключалась в том, что когда я открывал дочернюю форму, приложение в основном зависало, потому что вы ничего не могли получить. Я решил, что вместо ShowDialog (), чтобы открыть дочернюю форму, я бы использовал Show (this). Это решило начальную проблему, но теперь у меня есть новая. Начальная позиция дочерних форм установлена ​​как CenterParent, и когда я использую Show (this), она не работает. Можно ли каким-либо образом сделать дочернюю форму открытой, пока она и родительская форма установлены в верхнее положение, а начальная позиция дочерних форм установлена ​​в CenterParent? Спасибо.

Ответы [ 3 ]

3 голосов
/ 28 апреля 2013

Я нашел что-то полезное, чтобы поделиться с вами, ребята. Вместо этого следующий код

form2.TopMost = true;

используйте этот код в основной форме:

form2.Owner = this;

Если вы используете свойство Form.TopMost, форма будет перекрывать все другие не верхние формы, но также и из других приложений. Вместо этого установите свойство Form.Owner для родительской формы - той, которая должна находиться под формой (например, основной формой). G00d удачи:)

3 голосов
/ 27 октября 2009

Можно попытаться очистить свойство TopMost родительской формы на время, пока дочерняя форма видима.

Это решило бы вопрос о том, какая форма должна быть самой верхней, поскольку она будет только одна.

0 голосов
/ 27 октября 2009

Хм. Я создал формы. Затем я установил TopMost = true на обоих. Я добавить кнопку сначала и написал new Form2().ShowDialog();

И все просто отлично. Форма 2 активна и кликабельна. Form1 нет, так как ShowDialog был назван

И второй вариант отлично работает. Форма 2 открыта в центре экрана.

Может быть, я что-то неправильно понял?

...