C# 将Windows Mobile 6窗体放在前面
我无法将windows mobile 6表单放在前面。 我已经试过了C# 将Windows Mobile 6窗体放在前面,c#,winforms,windows-mobile,C#,Winforms,Windows Mobile,我无法将windows mobile 6表单放在前面。 我已经试过了 Form1 testForm = new Form1(); testForm.Show(); testForm.BringToFront(); testForm.Focus(); 但它总是在包含代码的表单后面。 唯一对我有用的是 testForm.TopMost = true; 或隐藏();旧窗体,然后显示新窗体,但我希望避免隐藏另一个窗体。使用多种其他形式时,TopMost也不是很干净 另一个有效的方法是 testFor
Form1 testForm = new Form1();
testForm.Show();
testForm.BringToFront();
testForm.Focus();
但它总是在包含代码的表单后面。
唯一对我有用的是
testForm.TopMost = true;
或隐藏();旧窗体,然后显示新窗体,但我希望避免隐藏另一个窗体。使用多种其他形式时,TopMost也不是很干净
另一个有效的方法是
testForm.ShowDialog();
但我不想显示形式模态
简而言之。我只想在另一个窗体前面显示新窗体,如果我关闭它,我想再次看到旧窗体
也许有人能帮我解决这个问题。谢谢。我没有在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获取句柄,然后调用setForeGroundIndow。您可能会发现其他有用的功能:
ShowWindow、bringwindowtop、SetWindowPos尝试以下操作:
在表单上放置计时器。将其设置为短刻度,例如100毫秒。
在计时器滴答声事件中
-禁用计时器(使其不再滴答作响),然后
-加载子窗体 此外,您可能还需要查看属性:
当一个窗体被另一个窗体拥有时,它将被最小化并与所有者窗体一起关闭。例如,如果窗体2被窗体1拥有,如果窗体1被关闭或最小化,则窗体2也将被关闭或最小化。拥有的窗体也决不会显示在其所有者窗体的后面。