初始化窗体和子控件的窗口句柄而不显示

本文关键字:窗口句柄 显示 控件 窗体 初始化 | 更新日期: 2023-09-27 17:58:10

有没有一种方法可以通过编程强制窗体及其所有子控件具有窗口句柄而不可见?看起来CreateControl会这样做,但这似乎只有在控件可见的情况下才起作用。请求表单的句柄会给表单一个句柄,但不会给所有子控件提供句柄,而且我真的不想手动迭代所有子控件,强制它们具有句柄。

目前,我倾向于让表单在一瞬间可见,然后隐藏它,这对我来说似乎是一个非常棘手的解决方案。有更好的方法吗?

初始化窗体和子控件的窗口句柄而不显示

我不明白你为什么不喜欢迭代。对我来说,这似乎是一个很好的解决方案。我会借此机会构建一个可重用的递归控制迭代器。

然而,如果您不想这样做,那么您可以在当前解决方案上尝试一个简单的变体。在使窗体可见之前,请设置其位置,使其不会显示在任何监视器上。然后当你再次隐藏它时,恢复到正确的位置。

如果你想在不实际看到表单的情况下创建窗口句柄,你可以这样做:

  public Form1()
  {
     InitializeComponent();
     this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
     this.ShowInTaskbar = false;
     this.Load += new EventHandler(Form1_Load);
  }
  void Form1_Load(object sender, EventArgs e)
  {
     this.Size = new Size(0, 0);
  }