我在winform的c#应用程序中工作。
我看到没有Style for element(与WPF不同)。但有没有办法简单地将所有标签设置为特定的设计?
其实我这样做:
public partial class myControl : UserControl
{
private Color LabelColor = Color.Indigo;
private Color LabelFont = new System.Drawing.Font("Arial",
18F,
System.Drawing.FontStyle.Regular,
System.Drawing.GraphicsUnit.Point,
((byte)(0)));
public myControl()
{
InitializeComponent();
//Set design
designLabels();
}
private void designLabels()
{
List<Label> labelsToStyle = new List<Label>();
labelsToStyle.Add(labelName);
labelsToStyle.Add(labelAge);
labelsToStyle.Add(labelSize);
foreach (Label l in labelsToStyle)
{
l.ForeColor = LabelColor;
l.Font = LabelFont;
l.Dock = DockStyle.Fill;
}
}
}
它可以工作,但它没有在设计器中正确显示(我必须运行应用程序才能看到我的设计)。也许它存在一种最简单的方式?
答案 0 :(得分:1)
根据我的评论,最简单的方法是创建一个自定义控件并在窗口中使用该控件。
这里有多简单。只需覆盖标签并在构造函数中设置您想要的默认值
public class DesignLabel : Label
{
public DesignLabel()
{
ForeColor = Color.Indigo;
Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
}
}
然后编译一次然后转到你的设计视图,打开你的工具箱,你会看到“DesignLabel”,只需拖放窗口就可以了。如果您在课程中更改默认值,它将在整个地方进行更改。
答案 1 :(得分:0)
如果您想在设计时更改样式,以便可以在Form.cs [design]中看到,则需要编辑Form.Designer.cs文件!但是你必须手工为标签做标签。我在此示例中保存了项目属性中的Font
和Color
(对不起德语版本):
Label
个。在Form.Designer.cs文件中,您可以添加属性:
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 9);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(41, 15);
this.label1.TabIndex = 0;
this.label1.Text = "label1";
this.label1.Font = Properties.Settings.Default.LabelFont;
this.label1.ForeColor = Properties.Settings.Default.LabelColor;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(12, 68);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(41, 15);
this.label2.TabIndex = 1;
this.label2.Text = "label2";
this.label2.Font = Properties.Settings.Default.LabelFont;
this.label2.ForeColor = Properties.Settings.Default.LabelColor;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(12, 122);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(41, 15);
this.label3.TabIndex = 2;
this.label3.Text = "label3";
this.label3.Font = Properties.Settings.Default.LabelFont;
this.label3.ForeColor = Properties.Settings.Default.LabelColor;
结果如下:
<强>声明强>
我不推荐这种方法!编辑Form.Desginer.cs文件永远不是一个好主意!我会坚持运行时间的变化。如果您想要更改所有Label
,只需为其this.Controls
过滤,并按照以下方式预先收集:
this.Controls.OfType<Label>().ToList().ForEach(lbl =>
{
lbl.Font = LabelFont;
lbl.ForeColor = LabelColor;
//lbl.Dock = DockStyle.Fill; // uncommented, because I could see only 1 Label
});
结果将是相同的。