Начать процесс как верхнее окно - PullRequest
0 голосов
/ 25 июня 2019

В настоящее время я открываю папку для пользователя, используя Process.Start("C:\\Some\\Path").

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

Как можно определить это новое окно, чтобы его свойство TopMost было установлено в true?Иначе, есть ли другой способ поставить это окно сверху?

Я просмотрел много разных свойств Process, искал что-то, что могло бы установить для TopMost значение true, или какое-то другое свойство, которое могло бы иметь такой же эффект..

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

1 Ответ

0 голосов
/ 27 июня 2019

Как было предложено в комментарии, лучший подход состоял в том, чтобы вообще избежать использования свойства TopMost.

Альтернативный способ гарантировать, что диалоги появляются поверх основных (или родительских) форм, - это идентифицироватьродительская форма для дочерней формы.Это можно сделать с помощью ключевого слова this в вызове метода ShowDialog().

В C #:

someForm.ShowDialog(this)

В Visual Basic:

someForm.ShowDialog(me)

Это идентифицирует this форму как родителя нового диалога, что приведет к тому, что новая форма будет отображаться сверху более надежно, чем не с использованием this в вызове метода, без использования TopMost свойство, которое может привести к другим непреднамеренным проблемам.

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

...