Принесите формы Windows Mobile 6 вперед - PullRequest
2 голосов
/ 11 ноября 2008

У меня проблемы с переносом формы windows mobile 6 на передний план. Я уже пробовал подобные вещи

Form1 testForm = new Form1();
testForm.Show();
testForm.BringToFront();
testForm.Focus();

Но это всегда за формой, которая включает этот код. Единственное, что сработало для меня, это

testForm.TopMost = true;

или Скрыть (); старая форма, а затем показать новую, но я хочу, чтобы не скрывать другую форму. TopMost в любом случае не очень чист с использованием нескольких других форм.

Другая вещь, которая работает, это

testForm.ShowDialog();

но я не хочу показывать модальную форму.

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

Может быть, кто-то может помочь мне с этой проблемой. Спасибо.

Ответы [ 2 ]

2 голосов
/ 11 ноября 2008

Я не пробовал это в WM6, но вы можете использовать некоторые пинвоки для вызова функций Win32:

[DllImport("coredll.dll")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("coredll.dll", EntryPoint="SetForegroundWindow")]
private static extern int SetForegroundWindow(IntPtr hWnd);

Вызвать FindWindow, чтобы получить дескриптор, а затем вызвать SetForegroundWindow. Другие функции, которые могут оказаться полезными:

ShowWindow, BringWindowToTop, SetWindowPos

0 голосов
/ 24 декабря 2008

Попробуйте это:

Поместите таймер в форму.
Поставьте галочку, скажем, 100 мс.
В событии timer_Tick
- отключить таймер (чтобы он не тикал снова), затем
- загрузить дочернюю форму.

Также вы можете посмотреть на свойство form.owner :
« Когда форма принадлежит другой форме, она сворачивается и закрывается вместе с формой владельца. Например, если Форма 2 принадлежит форме Форма1, если Форма 1 закрыта или свернута, Форма 2 также закрыта или свернута. Собственные формы также никогда не отображаются за формой их владельца . "

...