gpt4 book ai didi

c# - 遍历标签并更新它们

转载 作者:行者123 更新时间:2023-11-30 19:24:54 28 4
gpt4 key购买 nike

我有以下代码:

private void addPath(Label labelRound)
{
var path = new System.Drawing.Drawing2D.GraphicsPath();
path.AddEllipse(0, 0, labelRound.Width, labelRound.Height);
labelRound.Region = new Region(path);
}

我有几个名为 lbl0_1lbl0_2 等的标签。目前我这样做:

addPath(lblLight0_1);
addPath(lblLight0_2);
addPath(lblLight0_3);

这似乎不对,如何“正确”遍历所有标签?

感谢任何提示!

最佳答案

没错,这不是正确的方法™。有效的 Winforms 编程强烈依赖于继承 来让面向对象编程的通常好处得到返回。将一个类添加到您的项目并粘贴此代码:

using System;
using System.Windows.Forms;

public class OvalLabel : Label {
protected override void OnResize(EventArgs e) {
using (var path = new System.Drawing.Drawing2D.GraphicsPath()) {
path.AddEllipse(0, 0, this.Width, this.Height);
this.Region = new System.Drawing.Region(path);
}
base.OnResize(e);
}
}

编译并在工具箱顶部获得新控件。在您的设计中使用它,在适当的地方替换现有的 Label 控件。最快的方法是使用搜索+替换。您可能希望构造函数为某些属性设置默认值。请注意,您应用的其余部分根本不需要任何代码。

请注意其他好处,当您调整标签大小时它仍然可以正常工作,并且您在设计器中获得所见即所得 View 。现在您还可以很好地解决您必须解决的其他问题,例如文本被椭圆形剪裁。或者根本不使用 Region 属性,而是在 OnPaintBackground() 的覆盖中绘制一个更好看的抗锯齿椭圆。等等。

关于c# - 遍历标签并更新它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32222378/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com