未使用设计器正确加载的继承表单

时间:2012-08-09 14:35:01

标签: c# inheritance resources appdomain windows-forms-designer

我的项目是资源文件编辑器。它在appdomain中加载程序集并从中创建所有.resources文件。然后,它使用Resgen.exe将这些.resources文件更改为.resx文件。

创建.resx文件后,将调用Windows窗体设计器并从.resx文件创建窗体。然后,用户可以修改该表单。然后,使用al.exe(程序集链接器)将它们编译为dll。

在某种程度上,它就像一个自定义Visual Studio设计器,无需安装Visual Studio即可使用。

My problem is that when the designer try to draw a form that inherited from a 
base form that is in another project, it put all the components in the upper left
corner of the form.

/ ---------------------------------------------- ------------------------------------------- /

我将用一个例子来解释:

我有两个项目:A和B. B有一个表格。从B继承了自己的形式。 当我加载项目A的程序集时,设计器无法从项目B中找到基本表单,也无法正确创建表单。

普通表格声明如下:

public class AboutForm : System.Windows.Forms.Form

项目A的表单声明如下:

public class ExtractForm : AlexandriaR2P.UI.BaseExtractForm

AlexandriaR2P.UI.dll是我的项目B

/ ---------------------------------------------- ------------------------------------------- /

/ ---------------------------------------------- ------------------------------------------- /

我正在通过反射从程序集创建资源文件。如果程序集没有引用表单的另一个项目,那么一切正常。

但是如果我的程序集依赖于另一个程序集来创建表单,那么将无法正确加载。所有组件都将加载到左上角,一个加载到其他组件上。 (继承表单

在resx文件中,我发现了这个:

  <data name="&gt;&gt;m_SendControl.Type" xml:space="preserve">
      <value>AlexandriaR2P.UI.BaseSendControl, AlexandriaR2P.UI, Version=5.2.0.13, Culture=neutral, PublicKeyToken=null</value>
  </data>

在这里,AlexandriaR2P.UI是我的 dll :AlexandriaR2P.UI.dll,我认为设计师无法正确加载它并且表格不是很好。

我确保我的dll中的所有资源文件都在同一个文件夹中,并且引用的程序集已加载到AppDomain中,但我仍然遇到了问题。

谢谢!

设计者在构建表单时没有返回任何错误......它只是将组件加载到0,0,因为他找不到所需的信息。

此外,当我使用al.exe(AssemblyLinker)编译我的资源时,表单会变形。

0 个答案:

没有答案