winform中,如何让弹出的另一个窗体显示现有窗体前端
假设有两个程序,分别为“A.exe”、“B.exe”,分别是来自两个不同的解决方案,我在A中用Process.Start("B.exe"); 实现了启动同一目录下的B,此时如何保持B始终在A之前,如果B窗口不取消,则无法在A上操作?
ps:可能表达地不清楚,平时在一些程序中也碰到过类似的,就像这样
此时再点击“系统属性”窗口无法选中。
------解决方案--------------------你截图里面的是ShowDialog,模态对话框。
你说的两个exe是两个独立的进程,不一样的场景。
你要这个效果的话,可能要换一下思路了,楼下请继续~
------解决方案--------------------在A程序的Form1里,获取到B程序的窗口Form2,然后
private void Form1_Activated(object sender, EventArgs e)
{
Form2.BringToFront();
}
------解决方案--------------------找到目标程序主窗口(比如用FindWindow)
然后用SetParent将它的父窗口设置为第一个窗口,那么它永远在第一个窗口前面。
------解决方案--------------------或者,把Process.Start("B.exe")改为反射,然后ShowDialog
------解决方案--------------------
这样可以不,你测试一下,我没有测试过!
Form.FromHandle(process.MainWindowHandle).BringToFront();
------解决方案--------------------[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern IntPtr FindWindow(string strclassName, string strWindowName);