c# - C# 中的表单失去焦点

标签 c#

我有一个主窗体,它打开窗体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/

相关文章:

c# - main 之前的静态初始化

c# - Azure 应用程序洞察。自定义属性长度限制

c# - 使用区域管理器导航到在区域中声明的选项卡控件的选项卡

c# - 当工作线程非竞争性地写入本地或类变量时,是否需要锁定或 volatile ?

c# - WPF 中的多个 XAML 布局

c# - Generic HttpHandler(一个 ashx,IHttpHandler 接口(interface))什么时候可以重用?

c# - 从控制台应用程序隐藏控制台窗口

c# - 无法从数据库 MySqL C# 获取图像

c# - 使闭包捕获的变量易变

c# - 如何一次遍历两个数组?