c# - 更改应用程序中多个表单样式的最简单方法是什么?

标签 c# .net css forms

除了创建自定义按钮、自定义文本框和自定义标签等,然后在应用程序的所有窗体中使用这些控件,然后根据需要更改这些控件的默认颜色和字体之外,有没有一种简单的方法可以在包含多个表单的现有应用程序上实现这种类似 css 的功能?

顺便说一下,我知道我可以以编程方式打开每个 *.Designer.cs 文件,然后用“My.Namespace.My[Control]”搜索/替换“System.Windows.Forms.[Control]”的实例",但我不确定在代码设置控件的字体和颜色以及类似属性的情况下这将如何工作。那么是否只是确保自定义控件覆盖所有相关的 getter 方法的问题?

最佳答案

Windows 窗体不提供任何类型的皮肤。

一个简单的解决方法是在 Form 类上编写某种扩展方法:

public static void ApplySkin(this Form form, Skin skin)
{
    foreach (Control ctrl in form.Controls)
    {
        if (ctrl is TextBox)
        {
            TextBox textBox = (TextBox)ctrl;
            textBox.BackColor = skin.BackColor;
            textBox.ForeColor = skin.ForeColor;
            textBox.Font = skin.Font;
            ...
        }
        else if (ctrl is ComboBox)
        {
            ComboBox comboBox = (ComboBox)ctrl;
            comboBox.BackColor = skin.BackColor;
            comboBox.ForeColor = skin.ForeColor;
            comboBox.Font = skin.Font;
            ...
        }
        else if (ctrl is ...)
    }
}

关于c# - 更改应用程序中多个表单样式的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15994445/

相关文章:

c# - 在曲线路径上绘制形状或图像

c# - 现在 Xna 不受支持,什么是更好的选择?

html - 命名 html 元素类的 css 技巧

c# - .NET 转到 NuGet 包的实现

c# - C# 的多个构造函数的链接

c# - 读取 HTML 数据中的数据

c# - 一行中的线程安全单例属性

c# - 在C#Web表单上的每个请求上运行的事件

html - CSS 边框折叠不适用于顶部和左侧边框

html - 链接按钮的宽度在 div 菜单外有效,但在内部无效?