【问题标题】:C# Parent form open child form, call child function after parent closesC#父窗体打开子窗体,父关闭后调用子函数
【发布时间】:2014-11-17 17:32:49
【问题描述】:

长话短说…… 我需要 Form_1 来打开 Form_2。 我需要 Form_2 来执行代码,在 Form_1 被隐藏之后。 (无需用户交互)

目前,我的 Form_1 代码是这样......

function myFunction(){
// Create a new instance of the child form class
   Form2 F2 = new Form2(this,d);
// Minimise current form
  this.Hide();
// Show the child form
  F2.Show();
}

F2.Show 然后从 Form2_Shown 事件中启动更多代码。

问题是我需要 Form2_Shown 代码在 Form1 完全隐藏后运行。 因为 Form1.myFunction 调用 F2.Show(),所以 Form2_Shown 将始终发生,而 Form1 没有完全“退休”。

有没有办法分离这一系列事件以获得预期的结果? 打开表格_2 关闭表格_1 在 Form_2 中运行代码,与 Form_1 没有剩余连接?

线程 ?? (他对他们一无所知)

在你问之前......这是一个屏幕捕获应用程序。 Form_1 是带有按钮的 UI。 Form_2 是全屏透明表单。 因为 Form_1 挂在那里,所以会导致黑色图像。

如果我使用相同的模型,但在 Form_2 中通过按键触发屏幕截图,那么一切正常。

希望这是有道理的。 如果需要,我当然可以发布大量代码。

非常感谢。

【问题讨论】:

  • 所以在Form1 类中创建一个事件,并让Form2 订阅该事件。当Form1 被隐藏时,它会触发事件。
  • 您是否尝试在VisibleChanged 事件中显示Form2?

标签: c# multithreading forms


【解决方案1】:

您可以在 Form2 的构造函数中传入对 Form1 的引用。然后从 Form2 的构造函数中调用 Form1.Hide() 方法。然后,从 Form2 的构造函数中调用 Form2 上的 Show() 方法。

【讨论】:

  • 完美!谢谢你:)
猜你喜欢
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多