.net c sharp windows表单应用程序:打开同一表单的多个实例

时间:2009-11-07 09:52:55

标签: c# .net winforms

我想打开一个单独的多个实例,并且彼此独立地运行 是否有可能在.net windows Form应用程序中,如果是,我该怎样才能实现它。

基本上我想使用“** .net windows Form **”进行聊天应用程序,这将有**一对一**聊天窗口。

4 个答案:

答案 0 :(得分:3)

是的,这当然是可能的。

Form1 f1 = new Form1();
Form1 f2 = new Form1();
f1.Show();
f2.Show();

.NET世界中的表单是对象,您可以像创建任何其他类型的实例一样创建它们(您想要的任意数量)。

答案 1 :(得分:2)

MyForm f1 = new MyForm();
f1.Show();

MyForm f2 = new MyForm();
f2.Show();

// etc.

答案 2 :(得分:1)

首先,我假设您正在讨论一个托管多个表单的应用程序,而不是同时运行多个托管相同类型表单的多个应用程序:如果我错了,请忽略以下内容:)

就个人而言,我会使用我在此建议的策略:Manage muliple windows forms in c# app

我使用这种方法实现了解决方案,其中每个窗口都是表单模板的一个实例,所有窗口共享关闭整个应用程序的能力,表单之间的通信可以通过一个静态类来处理,所有表单都有一个引用到和作为消息调度员。

例如:如果您的每个表单都有一个TextBox:当您从模板或其他任何位置创建该表单时,您将对Form的TextBox的引用添加到静态类中的某种数据结构中:

(也许

List<TextBox> 

Dictionary<TemplateForm, TextBox>

这只是一个非常广泛的建议,你需要的很多东西将取决于“沟通”这个词的确切含义。你可以做一些事情,比如在TemplateForm上定义一个自定义事件,引发静态调度程序类订阅的事件:然后,当“Dispatcher”获得该事件时,它可以“广播”到每个其他表单或某些表单等。这些都是你可以做的广泛的草图。

从我的观点来看,这种方法可以以极低的代价为您提供最大的自由度,要求您只需确定并处理Form Closing事件,以确保关闭的最后一个Form关闭应用程序。

“每个表格是否相同”的设计是否适合您的应用需求;我不知道:如果你愿意的话,你仍然可以使用这种方法制作一个且只有“主表格”,并且只制作能够关闭应用程序的表格(这样你就不必担心每个表格的可能性)关闭让应用程序“空着运行”。

我使用这种方法为朋友做了一个应用程序,其中有一个“主表单”基本上有四个“视图”:启动屏幕,配置对话框,状态概览屏幕显示应用程序的当前状态以及哪个TemplateForm被“连接”到其他TemplateForm(s),最后,“那是所有人”屏幕:)

最好的,

答案 3 :(得分:0)

确实,你没有以对话方式显示表单

Form3 objForm = new Form3();
objForm.ShowDialog();

在这种情况下,它将等待关闭表格,然后执行下一行。