如何在C#Winform应用程序中轻松保持一致的UI设置?

时间:2010-03-14 20:39:39

标签: c# .net winforms user-interface

我有很多不同的UserControls,并且希望保持一致的UI设置(主要是颜色和字体)。我的第一次尝试是这样的:

public class UISettings
{
//...
    public void SetupUserControl(ref UserControl ctrl)
    {
        ctrl.BackColor = this.BackColor;
    }
}
在这样的每个控件中调用

settings.SetupUserControl(ref this);

由于this是只读的,因此不能通过ref参数传递,因此这不起作用。如果没有手动更改每个项目的属性,还有哪些其他选项可以保持一致的UI?

4 个答案:

答案 0 :(得分:5)

继承!如果您的表单或控件将始终使用相同的样式,并且您希望将其设置为基础,则只需创建自己的用户控件,从表单/控件继承。默认情况下,所有表单都将继承自“表单”。而不是从默认表单继承,创建一个继承自Form的新用户控件,然后将其作为基类。

CustomForm : Form // Your custom form.

Form1 : CustomForm // Inherit from it.

......同样适用于组件。如果您希望按钮在整个板上具有相同的样式,请创建用户控件并使其从按钮控件继承 - 然后使用自定义控件。

每当您想要更改基本样式或任何设置时,只需更改自定义控件设置 - 您的新表单/控件将自动更新!

答案 1 :(得分:3)

做同样的事情。不要通过ref传递它。 UserControl已经是一个引用对象,因此无需使用ref关键字将其传递给您的方法。

您可能还需要考虑一个递归方法,该方法将在表单上找到所有UserControl并将其传递给您的方法。

答案 2 :(得分:1)

提供此类设置的基类怎么样?

答案 3 :(得分:1)

两个答案:

  1. 您不需要ref,控件对象是引用类型。放下它。
  2. 创建一个Base UserControl并从中派生您的控件。你仍然可以这样做,只需编辑控件的类定义。对于新控件,您可以按照向导。
  3. 提示:在baseControl中设置样式。然后确保派生控件不会覆盖,最好的方法是扫描* .Designer.cs文件并删除您知道应该来自基础的所有设置。