Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改c窗体设计而不创建此类窗体的实例_C#_Winforms - Fatal编程技术网

C# 更改c窗体设计而不创建此类窗体的实例

C# 更改c窗体设计而不创建此类窗体的实例,c#,winforms,C#,Winforms,所以。。。我需要为我正在开发的应用程序构建插件体系结构,插件体系结构实际上是使用接口构建的,并且通常运行良好 我面临的一个独特的问题是允许插件更改表单的设计,以便添加更多控件 本例中的插件是在主宿主窗体的onload事件期间加载的 现在,我可以改变应用程序中的任何目标表单并添加额外的控件,而不必创建此类表单的实例,这意味着在创建实例之前已经完成了ui修改 我正在考虑使用反射和。。。。。这就是我遇到的难题,我如何更改已找到的表单,并使编辑可用于任何新实例?让插件写入应出现在给定表单上的控件列表,然

所以。。。我需要为我正在开发的应用程序构建插件体系结构,插件体系结构实际上是使用接口构建的,并且通常运行良好

我面临的一个独特的问题是允许插件更改表单的设计,以便添加更多控件

本例中的插件是在主宿主窗体的onload事件期间加载的

现在,我可以改变应用程序中的任何目标表单并添加额外的控件,而不必创建此类表单的实例,这意味着在创建实例之前已经完成了ui修改


我正在考虑使用反射和。。。。。这就是我遇到的难题,我如何更改已找到的表单,并使编辑可用于任何新实例?

让插件写入应出现在给定表单上的控件列表,然后在创建实例时从该列表中读取表单类。

您可以通过继承来完成此操作

假设插件中的表单名为pluginForm。在应用程序中,您需要创建一个从pluginForm继承的表单,而不是System.Windows.form


设计师也会工作。除非将修改器更改为受保护,否则控件将被锁定。

您是否了解了WPF/XAML的工作原理?似乎很容易做到,我没有个人经验。我有,但这是基于XMl的,确实很容易,尽管winforms有点不同。所以你的问题是针对winforms的?我的答案如何?没用?嗨,Martin,对不起,我可能有点含糊不清,插件只是在已经构建的表单中添加一些小的附加内容,比如添加一个启动外部服务的按钮。这些插件的开发人员可能/可能没有主应用程序,只有接口文件,因此表单继承可能有点过火,插件负责详细说明控件类型、单击事件处理程序(如果是按钮)等等。该插件还详细说明了表单的名称作为其目标。Jnylen的解决方案对我来说很有效,因为它允许将来在主应用程序更新中使用表单,就像这个想法一样!如果没有其他建议,我会接受的!谢谢。这也是个好主意。不过,也可以让继承走另一条路——让插件从主应用程序中的表单继承,或者让插件以某种方式注册继承的表单类型,或者在加载插件时使用反射来查看它是否有任何可以重写的从表单继承的类型。