Q
防止多个表单实例
6
A
回答
2
两个选项,这取决于你的需要:
使用
ShowDialog
代替Show
,这将打开一个模式窗口。如果您不需要主窗体在子窗体打开时处于活动状态,则这是显而易见的解决方案。或者跟踪已经在主窗体中打开的窗口,如果窗口已经打开,则不执行任何操作。如果你希望用户能够在子表单已经打开的情况下使用主表单,那么可能需要打开其他表单。
0
禁用主窗体,直到子窗体消失或禁用按钮。
button_onClick(object Sender, EventArgs e)
{
Button btn = sender as Button;
btn.Enabled = false;
Form myform = new MyForm();
myform.Show();
}
当然,你真的应该使用form.ShowDialog()
而不是form.Show()
如果你想模态行为。
2
做这样的事情:
SingleForm myform = null;
void ShowMyForm_Click(object sender, EventArgs e)
{ if (myform == null)
{
myform = new SingleForm();
}
myform.Show();
myform.BringToFront();
}
1
力表单对象坚持Singleton模式
0
我更喜欢使用泛型和延迟加载来处理我的形式。由于我的所有表单都是从一个基类继承而来,所以我可以使用相同的方法将表单带到前面,将它们发送到后面,销毁它们,启动它们等。
如果您保留一个表单管理器类负责管理任何已加载的表单,您可以将任何形式带到您想要的前端,或防止特定表单能够返回,除非满足某些标准。
public void LoadForm<T>() where T : MyNameSpace.MyBaseForm
{
// Load all your code in this joint and just call it when you
// need a form. In here, you can determine if a copy of the form
// already exists and then bring it forward or not
}
相关问题
- 1. 防止显示一个表单的多个实例
- 2. 如何防止表单的多个实例?
- 3. 使用excel插件防止多个单例对象的实例
- 4. 如何防止HAProxy的多个实例?
- 5. 防止创建多个GUI实例
- 6. jquery防止插件的多个实例
- 7. 防止对象的多个实例
- 8. 防止单个可执行文件的多个进程实例
- 9. 表单的多个实例
- 10. 防止活动的多重实例化
- 11. Knockout.js - 防止多个表单提交
- 12. 防止多个表单提交
- 13. 防止多个表单提交MVC Jquery
- 14. 防止多个表单提交
- 15. 防止JWPlayer多次加载JWPLAYER.SWF多个实例
- 16. 如何防止某个类的多个对象实例化
- 17. 防止colorbox实例关闭
- 18. 停止多个setTimeout实例
- 19. memcache,多个实例与单个实例
- 20. 防止TabControl中的页面的多个实例
- 21. JBOSS - 如何防止配置的多个实例启动
- 22. Android IntentService - 防止同一请求的多个实例
- 23. 防止多个服务实例 - 最佳方法?
- 24. 防止我的应用程序的多个实例
- 25. 防止.NET中给定应用程序的多个实例?
- 26. 如何防止Electron中的多个实例
- 27. 防止启动Java应用程序的多个实例
- 28. 如何防止Windows 10 XAML应用程序的多个实例?
- 29. 多个实例,什么是防止碰撞
- 30. 防止GTK应用程序的多个实例
这样比较好,但它并不能防止用户意外或故意将主窗体再次带到最前面。 – 2010-02-01 01:11:01
他没有说主表单必须留在后台......他只是不希望用户能够打开另一个表单,当按钮被点击时......;)但是thx的编辑。 .. 哦......我误解了我的猜测。我以为有一个按钮被点击时打开了第二个窗体... idk – IAbstract 2010-02-01 01:26:24
我打算添加.ShowDialog()作为另一个选项,但John K.&Johannes打败了我 – IAbstract 2010-02-01 01:27:39