我有很多不同的UserControls
,并且希望保持一致的UI设置(主要是颜色和字体)。我的第一次尝试是这样的:
public class UISettings
{
//...
public void SetupUserControl(ref UserControl ctrl)
{
ctrl.BackColor = this.BackColor;
}
}
在这样的每个控件中调用:
settings.SetupUserControl(ref this);
由于this
是只读的,因此不能通过ref
参数传递,因此这不起作用。如果没有手动更改每个项目的属性,还有哪些其他选项可以保持一致的UI?
答案 0 :(得分:5)
继承!如果您的表单或控件将始终使用相同的样式,并且您希望将其设置为基础,则只需创建自己的用户控件,从表单/控件继承。默认情况下,所有表单都将继承自“表单”。而不是从默认表单继承,创建一个继承自Form的新用户控件,然后将其作为基类。
CustomForm : Form // Your custom form.
Form1 : CustomForm // Inherit from it.
......同样适用于组件。如果您希望按钮在整个板上具有相同的样式,请创建用户控件并使其从按钮控件继承 - 然后使用自定义控件。
每当您想要更改基本样式或任何设置时,只需更改自定义控件设置 - 您的新表单/控件将自动更新!
答案 1 :(得分:3)
做同样的事情。不要通过ref传递它。 UserControl已经是一个引用对象,因此无需使用ref关键字将其传递给您的方法。
您可能还需要考虑一个递归方法,该方法将在表单上找到所有UserControl并将其传递给您的方法。
答案 2 :(得分:1)
提供此类设置的基类怎么样?
答案 3 :(得分:1)
两个答案:
ref
,控件对象是引用类型。放下它。提示:在baseControl中设置样式。然后确保派生控件不会覆盖,最好的方法是扫描* .Designer.cs文件并删除您知道应该来自基础的所有设置。