Свойство TopMost не работает

У меня есть форма, в которой, когда я устанавливаю флажок (Duplicate #), появляется всплывающая форма (CableID_DuplicateView), и я хочу, чтобы она оставалась наверху, пока флажок не будет снят. Однако этого не происходит.

Я установил для свойства TopMost значение true как динамически, так и статически;

this.TopMost = true;
this.TopMost = Checkbox.Checked;

Но если я нажимаю на что-либо в предыдущей форме, оно перемещается на задний план.

введите здесь описание изображения

Как я могу держать его на высоте?

Примечание. Я хочу, чтобы другая форма по-прежнему была доступна под верхней формой. И да, это приложение Mdi, имеет ли это значение для свойства TopMost?


person Ben    schedule 30.05.2014    source источник
comment
Вы не можете сделать дочернее окно MDI самым верхним. Winforms забывает генерировать исключение, если вы все равно попытаетесь это сделать. Только окна верхнего уровня могут быть самыми верхними. Например, ваш родитель MDI. Нет очевидного пути вперед, вам придется переосмыслить свой пользовательский интерфейс. Закрепление элемента управления в родительском элементе всегда делает его доступным.   -  person Hans Passant    schedule 30.05.2014


Ответы (3)


Невозможно заставить окна оставаться сверху в MDI системе. Можно попробовать активировать окна, чтобы они выскакивают сверху, но это только больше вредит другим действиям. Я бы не рекомендовал это пробовать. Просто нет рабочего способа сделать какое-то окно TopMost в MDI конфигурации.

person W0lfw00ds    schedule 30.05.2014

Это сработало для моей аналогичной проблемы:

пытаться

yourTopForm.TopLevel=true;
yourTopForm.TopMost=true;
yourTopForm.Show(this);

Перегруженная функция Show(this) для отображения формы является важной частью.

person termigrator    schedule 01.01.2017
comment
У меня была такая же проблема. Это решение на 100% в порядке. Это работает как шарм! - person morteza karimian kelishadrokhi; 20.02.2021

Передайте родительскую форму в метод Show самой верхней формы.

person Xela    schedule 30.05.2014
comment
Я почти уверен, что сделал это, ты имеешь в виду? ShowDuplicateView(Menu_View Main_Menu, CableID_CreateView CView) - person Ben; 30.05.2014
comment
Вот так: var DuplicateForm = new DuplicateForm(); дубликатForm.Show(это); // его родительская форма - person Xela; 30.05.2014
comment
ОК, просто чтобы уточнить, моя родительская форма - Menu, а моя дочерняя форма, CreateView, вызывает DuplicateView при установке флажка. - person Ben; 30.05.2014