Как вывести «все формы» на передний план (WindowsMobile / C #) - PullRequest
0 голосов
/ 28 июня 2010

(C # / WindowsMobile 6)

Давайте возьмем приложение с 3 STATIC формами: Form1, Form2, Form3, где Form1 открывает Form2, вызывая Form2.Show (), а Form2 делает то же самое с Form3. Form2 и Form3 имеют кнопку «Выход», которая просто скрывает форму (не «закрыть», просто скрыть).

Итак, мы выполним эти шаги:

  • открыть приложение;
  • перейти к Form2, нажав кнопку «Form2» на Form1;
  • перейти к Form3, нажав кнопку «Form3» на Form2;
  • откройте проводник и «заново откройте» приложение, нажав на его файл. Форма 3 появляется;
  • скрыть форму Form3, нажав кнопку «Выход» на форме Form3 (this.Hide ()). Вот в чем проблема: вместо Form2 появляется файловый менеджер.

Я не хочу вызывать «вызывающую форму». Show () каждый раз, когда я скрываю форму. Это «работает», но после «this.Hide ()» и перед «callinform.Show ()» появляется экран проводника, и мне нужно «контролировать», кто кому звонит.

Как это решить? Есть ли способ вывести все заявки на первый план в том же порядке, в котором они появились?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 29 июня 2010

Там действительно нет пути.Вы можете реализовать способ хранения форм аналогично первому ответу, но когда вы переключаетесь, вам нужно сделать:

"callingform".BringToFront();
"callingform".Show();

Это поместит все ваши формы перед Проводником.

0 голосов
/ 28 июня 2010

Возможно, вам придется провести какое-то расследование по этому поводу, но мне бы хотелось попробовать взглянуть на коллекцию Application.Forms [].

Может быть, кто-то может подтвердить или опровергнуть это, но я думаю, что обычно, Application.OpenForms [0] будет основной / начальной формой с последующим появлением формы в Application.OpenForms [1], Application.OpenForms [2] и т. Д. *

Так что вы можете просто попробовать перейтив обратном направлении по этой коллекции форм.

Что-то вроде (или вариация),

public void BringLastOpenedFormToFront()
{
    if(Application.OpenForms.Count > 0)
    {
       Form form = Application.OpenForms[Application.OpenForms.Count - 1];
       BringToFront(form);  // your bring to front method.
    }
}

Это позволит вам убедиться, что последняя появившаяся форма была перенесена на фронт и сразу же виднаПользователь.Дайте мне знать, если вам нужны какие-либо разъяснения.

Ссылка на MSDN: http://msdn.microsoft.com/en-us/library/system.windows.forms.application.openforms.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...