我想同时把字体改成标签(Label1到Label10),解释一下:
我有一个表单WindowsForms
,其中我panel
在该面板中有一个我添加了 2 个用户控件UserControls
,在这两个用户控件中UserControls
我有几个labels
,它们不属于它们,UserControls
但高于UserControl
从表单中添加的那些。
这张图片来说明,
Panel
是Gris Oscuro
背景,UserControl 包含1个图标和一个属于用户控件的标题,包括浅灰色背景颜色的部分。唯一不属于用户控件的对象是可以观察到的内部标签。
但是在执行该函数时,它还会更改标题的字体,这些标题UserControls
也是标签但不属于这种形式,而是来自用户控件,我这样做是使用递归函数:
private void cambiar_fuentes(Control contenedor)
{
foreach (Control control in contenedor.Controls)
{
if (control.Controls.Count > 0)
cambiar_fuentes(control);
else
{
if (control is Label) ((Label)control ).Font = new Font("Arial", 10, FontStyle.Regular);
}
}
}
调用函数:
cambiar_fuentes(panel1);
如何仅更改属于表单本身的标签(1 到 10)的字体?
已编辑
Designer.cs 代码片段:
this.panel1.BackColor = System.Drawing.Color.Transparent;
this.panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel1.Controls.Add(this.flowLayoutPanel1);
this.panel1.Location = new System.Drawing.Point(1, 1);
this.panel1.MaximumSize = new System.Drawing.Size(295, 2);
this.panel1.MinimumSize = new System.Drawing.Size(2, 732);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(295, 732);
this.panel1.TabIndex = 5;
this.flowLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.flowLayoutPanel1.AutoScroll = true;
this.flowLayoutPanel1.BackColor = System.Drawing.Color.Transparent;
this.flowLayoutPanel1.Controls.Add(this.userControl1);
this.flowLayoutPanel1.Controls.Add(this.userControl2);
this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
this.flowLayoutPanel1.Location = new System.Drawing.Point(1, 34);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
this.flowLayoutPanel1.Size = new System.Drawing.Size(292, 684);
this.flowLayoutPanel1.TabIndex = 29;
this.flowLayoutPanel1.WrapContents = false;
this.userControl1.Controls.Add(this.label1);
this.userControl1.Controls.Add(this.label2);
这里
this.uersControl1.Controls.Add(this.label1);
继续其他标签...
环境:Visual Studio 2010 & .NET Network 4。
您可以在您的上创建一个只读属性,
UserControl
该属性返回添加到它的控件列表。不包括那些用户控件。根据您所基于的控件的代码,它将是这样的
这样,该属性
PanelControls
只返回添加到用户控件的控件,而不是它自己的控件,您可以通过它们更改字体或您想要的任何其他属性。cambiar_fuentes
您可以将该方法更改为通用方法,在该方法中您指示要应用更改的控件类型,并传递 source :以这种方式更改控件中包含的标签的所有字体,
CollapsiblePanel
您可以执行以下操作:如果您希望保留当前格式,您可以在方法中检查
cambiar_fuentes
包含控件是否为 type 的控件CollapsiblePanel
。如果是这样,你遍历集合PanelControls
,如果不是集合Controls
:这样你就可以继续打同样的电话:
在我看来,您可以在评估控件是否具有内部控件时区分用户控件,如下所示:
请注意,您必须替换
usercontrol
为用户控件的类名。这样可以防止检查用户控件。
您好,您可以执行以下从控件中恢复的操作,在这种情况下,您的表单类型
Label
如下然后你会在你的表格中这样称呼它