我有两个Windows窗体应用程序,我们称之为FormA.exe
(父级)和FormB.exe
(子级)。 FormB.exe
是一个可以单独运行的应用程序。 FormA.exe
是另一个应用程序,其功能之一是调用FormB.exe
。
我有两个应用程序的源代码,我可以修改它们。
目前只要FormA.exe
想要呼叫FormB.exe
,我就会使用Process
类来启动FormB.exe
进程。问题是
Form
之间传递消息。FormB.exe
从FormA
发出呼叫时,用户将看作另一个应用程序,与FormA.exe
无关,但我希望它显示为FormA
下的单个应用程序,FormB
作为MDI子项。FormB
本身就是一个MDI。因此,如果我将其作为MDI加载,我将收到此错误System.ArgumentException: Form cannot be both an MDI child and MDI parent
。FormB
无法正常运行。换句话说,FormA
的整个目的都将丢失。还有其他方法 - 除了将FormB
设置为MDI子项FormA
- 使一个winform应用完全包含在另一个中,并让它们相互通信吗?
答案 0 :(得分:1)
我同意诺埃尔
有很多方法可以实现您的目标。一种方法是使用System.Reflection
像formA
这样 Assembly a = Assembly.LoadFrom("WindowsApplication1.exe");
Form frm = a.CreateInstance("WindowsApplication1.FormB") as Form;
frm.MdiParent = this;
frm.Show();
答案 1 :(得分:0)
您可以将FormA.exe中的项目引用添加到FormB.exe,并以编程方式将formb加载为mdi子格式。
您可以轻松地在它们之间传递消息。 FormB.exe仍然可以作为应用程序自行调用,只需将其保存为Windows应用程序而不是Windows库项目。