2009-10-26 2 views
3

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

ответ

3

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

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

+0

Хорошая идея, должен был подумать об этом сам ха-ха. – user

0

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

И все просто отлично. Form2 активен и доступен для кликов. Form1 не с ShowDialog был вызван

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

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

2

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

form2.TopMost = true; 

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

form2.Owner = this; 

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

Смежные вопросы