我有一个主窗体,它打开窗体A,从窗体A我可以打开窗体B,从窗体B我可以打开窗体C。问题是,如果我打开直到窗体B,一切正常,但如果我同样打开窗体C,然后关闭窗体C和B,窗体A位于主窗体后面。对于表单,我只是创建表单的实例,然后使用 .Show()
cNewForm form = new cNewForm();
form.Show();
我对每个表单都这样做
最佳答案
您没有正确设置窗口所有权,因为您使用的是无参数版本的 Show()
。您需要通过调用Show()
来设置所有者接收所有者参数的重载。或者,您可以设置 Owner
直接使用属性,但最好在调用 Show()
时这样做。
窗口所有者是一个重要的 Win32 概念。我建议阅读MSDN documentation就这个主题而言。
- An owned window is always above its owner in the z-order.
- The system automatically destroys an owned window when its owner is destroyed.
- An owned window is hidden when its owner is minimized.
就您而言,我认为您希望表单 A 由您的主表单拥有,表单 B 由表单 A 拥有,表单 C 由表单 B 拥有。
关于c# - C# 中的表单失去焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14626919/