表单设计来自dll项目,而不是来自winforms项目

本文关键字:项目 winforms dll 表单 | 更新日期: 2023-09-27 18:07:23

因此,当我在Win10 PC上创建并执行我喜欢的winforms项目时,该项目中的所有表单都具有Metro风格的UI设计。但是,如果我在同一台电脑上创建了一个dll项目,并引用了我认为与winforms项目相同的System.Windows.Forms dll,那么我可以从dll创建的表单看起来有点像我在Win7上,并启用了使用XpVisualStyles选项。例如:作为一个基本的例子:默认情况下,表单上的所有按钮都设置为3d边框样式,尝试使它们变平并不是那么容易(如果它们至少看起来不错的话(

问题是:为什么从dll创建的表单看起来与从winforms应用程序创建的表单不同,尽管它们都引用了相同的dll(我甚至检查了System.Windows.forms的哈希和版本(?第二部分如何使从dll创建的表单看起来像winforms项目中的表单?

附加信息:dll表单是通过引用1控制台项目和2其他winforms项目中的dll创建的。两人看起来都像Xp。

表单设计来自dll项目,而不是来自winforms项目

因此,感谢@Reza Aghaei的友好评论,这个问题得到了解决。


第一个解决方案

确保在打开表单的应用程序中调用Appliction.EnableVisualStyles();,如果没有System.Windows.Forms,则需要对其进行引用。所显示的表单将看起来就像它在设计器中向您显示的那样。

第二个解决方案

在拥有该表单的dll中调用Appliction.EnableVisualStyles();。这由完成

  • 调用每个窗体的构造函数
  • 或者通过dll中负责所有初始化的一些静态函数

此外,表单构造函数中可能有一个条件,它调用同一dll的某个函数,检查是否启用了样式。

我会根据我的知识推荐使用静态初始化函数。