【问题标题】:Form design from dll project other than from winforms project来自 dll 项目而非 winforms 项目的表单设计
【发布时间】:2016-09-18 18:15:34
【问题描述】:

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

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

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

【问题讨论】:

  • 看程序的主入口点,Main方法,一般在Program.cs,看Application.Run(new SomeForm());前面有没有Application.EnableVisualStyles();。它可以在您的应用程序中启用视觉样式。

标签: c# winforms dll


【解决方案1】:

感谢@Reza Aghaei 的精彩评论,这个问题得到了解决。


第一种解决方案

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

第二个解决方案

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

完成
  • 在每个表单的构造函数中调用
  • 或通过 dll 中负责所有初始化的静态函数

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 2017-01-19
    • 1970-01-01
    • 2021-10-09
    相关资源
    最近更新 更多