2008-11-11 3 views
2

У меня возникли проблемы с переносом формы Windows Mobile 6 спереди. Я пытался что-то вроде этого ужеПринесите Windows Mobile 6 формы на передний план

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

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

testForm.TopMost = true; 

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

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

testForm.ShowDialog(); 

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

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

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

ответ

2

Я не пробовал его в WM6, но вы можете использовать некоторые PInvoke для вызова функций 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

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

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

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