在我的Visual Studio项目档中:<TargetFramework>net6.0-windows</TargetFramework>
我有一个Winforms应用程序,它的主窗体有两个按钮,按钮A和按钮B。
我已经编写了按钮A的代码,这样当单击按钮A时,它会禁用自己,启动窗体A,当窗体A关闭时,控制返回到按钮单击事件,按钮A在该事件中重新启用:
btnA.Enabled = false;
FormA frmA = new FormA();
btnA.Enabled = frmA.ShowDialog(this) == DialogResult.OK;
但是,在frmA关闭之前,用户无法在主窗体上执行任何操作。
当单击按钮A时,我仍然希望禁用按钮A,以便用户无法打开另一个窗体A。但是,我还希望用户能够单击主窗体上的按钮B,并使该逻辑以相同的方式工作:禁用按钮B,启动表单B,重新启用按钮B。
我尝试做的是给予用户能够从主窗体启动一个窗体A和一个窗体B。我可以用我描述的模式来实现吗?如果可以,如何实现?(注意:以后可能会有按钮C和D。)我很乐意考虑一种不同/更好的方法。谢谢海吉。
1条答案
按热度按时间xmq68pz91#
我使用Show()找到了一个SO解决方案,并捕获了Form A上的close事件:
WinForms; detecting form closed from another form
根本不涉及太多的编码。