更改Windows窗体的外观

本文关键字:外观 窗体 Windows 更改 | 更新日期: 2023-09-27 18:02:21

我正在开发一个windows窗体。我想更改表单及其控件的物理外观。我能够使用Skincrafter的演示,但是这使应用程序变得非常沉重。我不满意它在浏览标签页、移动窗口等方面的"沉重"感觉。这是相当简单的程序,我没有这个问题时,不使用皮肤工匠。当不使用它时,GUI的响应非常快,我想保持它的方式。

我试过很多不同的皮肤,结果都很相似。

所以我不会使用skincrafter,除非有人指出这个较慢的GUI的可能原因。我遵循了他们的教程,没有做任何其他事情。简单的过程。之前:快速的GUI -之后:慢的GUI。

谁能推荐另一种方法来改变我的控件/表单的外观?有没有一种方法可以编程地改变控件和表单的外观,而不依赖于第三方蒙皮软件?

注意,我不希望我的用户改变皮肤。我想应用一个,就这样。

谢谢史蒂夫。

编辑:这个项目还远没有完成,所以我要给WPF一些真正的好想法,这样我就不会在我有一个比现在大4倍的项目时结束了。我已经开始转换了,应该不会有太大的问题。找到的定时器和串行端口不能从工具箱中取出,定时器被dispatchtimer取代。到目前为止还没有什么大不了的。另一件让我想使用WPF的事情是,我可能需要制作图表(绘图)来显示温度随时间的变化。我使用串行端口与外部USB控制器(虚拟COM端口)通信,该控制器读取一堆温度传感器和风扇速度。我怀疑使用WPF绘图会更好。最后一件事:它只是关于颜色/字体,但更多的是关于按钮的外观,实际窗口的外观(边框形状)。我想做的是用html和css做类似的事情。我确实想有自定义标签,让他们看起来像一个"数字显示"的实时温度和风扇转速测量。

再次感谢所有人提供的帮助!

更改Windows窗体的外观

在遥远的过去,我通过子类化开箱即用的控件(Label, TextBox等),并让子类从XML文件(也可以使用app.config)中读取外观配置(例如颜色,字体),为WinForms项目添加了轻量级皮肤。

这种方法很容易实现,而且我没有看到明显的性能下降。

如果你只是想要一个一致的、新的外观,而不需要让最终用户从各种各样的皮肤中选择,子类化的方法是非常直接的。例如,要修改Label的外观:

public MyLabel : Label
{
    MyLabel()
    {
        this.ForeColor = Colors.Blue;
    }
}

然后,在代码中当前有Label的地方,使用MyLabel代替。

如果你正在开始一个新项目,我强烈建议你使用WPF。它提供了一个更加灵活的UI框架。一个关键特性是它将外观从UI实现中分离出来。