C# 设置标签边框的大小
我制作了一个由9个标签组成的网格,每个标签都有一个边框。在一行/一列中每3个标签之后,我希望边框比前一个标签更厚。我找不到一个方法来添加这个大小的边框 我在谷歌上搜索,但没有找到任何有用的东西 有人能帮我吗C# 设置标签边框的大小,c#,winforms,label,border,C#,Winforms,Label,Border,我制作了一个由9个标签组成的网格,每个标签都有一个边框。在一行/一列中每3个标签之后,我希望边框比前一个标签更厚。我找不到一个方法来添加这个大小的边框 我在谷歌上搜索,但没有找到任何有用的东西 有人能帮我吗 private void AddNodesToGrid() { pnlGrid.Controls.Clear(); rooster = new NewLabel[9, 9]; int Xpos = 0; int Ypos = 0; for (int I = 0; I &
private void AddNodesToGrid()
{
pnlGrid.Controls.Clear();
rooster = new NewLabel[9, 9];
int Xpos = 0;
int Ypos = 0;
for (int I = 0; I < 9; I++)
{
for (int T = 0; T < 9; T++)
{
rooster[I, T] = new NewLabel(new Node());
rooster[I, T].Left = Xpos;
rooster[I, T].Top = Ypos;
rooster[I, T].Width = 30;
rooster[I, T].Height = 30;
rooster[I, T].BorderStyle = BorderStyle.FixedSingle;
rooster[I, T].TextAlign = ContentAlignment.MiddleCenter;
pnlGrid.Controls.Add(rooster[I, T]);
Xpos += 30;
}
Xpos = 0;
Ypos += 30;
}
}
private void AddNodesToGrid()
{
pnlGrid.Controls.Clear();
公鸡=新标签[9,9];
int Xpos=0;
int-Ypos=0;
对于(int I=0;I<9;I++)
{
for(int T=0;T<9;T++)
{
rooster[I,T]=NewLabel(newnode());
公鸡[I,T].左=Xpos;
公鸡[I,T].Top=Ypos;
公鸡[I,T]。宽度=30;
公鸡[I,T]。身高=30;
rooster[I,T].BorderStyle=BorderStyle.FixedSingle;
rooster[I,T].TextAlign=ContentAlignment.MiddleCenter;
pnlGrid.Controls.Add(rooster[I,T]);
Xpos+=30;
}
Xpos=0;
Ypos+=30;
}
}
更好的方法是使用嵌套的TableLayoutPanel
。从设计器中创建它,并将标签放在其中。步骤:
- 放置一个3x3
(父面板)表格布局面板
- 在父面板的每个单元格中放置一个3x3
(子面板)表格布局面板
- 将父表和子表的
设置为CellBorderStyle
Single
- 将子表的
边距设置为
李>0,0,0,0
如果是我,我宁愿自己画桌子。但是如果你需要使用标签,我建议你自己画边界:
public class NewLabel : Label
{
//...
private int _borderWidth = 1;
public int BorderWidth
{
get { return _borderWidth; }
set
{
_borderWidth = value;
Invalidate();
}
}
private Color _borderColor = Color.Black;
public Color BorderColor
{
get { return _borderColor; }
set
{
_borderColor = value;
Invalidate();
}
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
int xy = 0;
int width = this.ClientSize.Width;
int height = this.ClientSize.Height;
Pen pen = new Pen(_borderColor);
for (int i = 0; i < _borderWidth; i++)
e.Graphics.DrawRectangle(pen, xy + i, xy + i, width - (i << 1) - 1, height - (i << 1) - 1);
}
}
公共类NewLabel:Label
{
//...
私有int_borderWidth=1;
公共整数边框宽度
{
获取{return\u borderWidth;}
设置
{
_边界宽度=值;
使无效();
}
}
私有颜色_borderColor=颜色.黑色;
公共颜色边框颜色
{
获取{return\u borderColor;}
设置
{
_边框颜色=值;
使无效();
}
}
受保护的覆盖无效OnPaint(PaintEventArgs e)
{
基础漆(e);
int xy=0;
int width=this.ClientSize.width;
int height=this.ClientSize.height;
钢笔=新钢笔(_borderColor);
对于(int i=0;i<\u borderWidth;i++)
e、 Graphics.DrawRectangle(画笔、xy+i、xy+i、宽度-(我使用Winforms还是WPF?我使用Winforms进行此项目“表格”是什么意思?您使用的是TableLayoutPanel
?有办法在这里发布代码吗?那么这是外部标签的边框还是有一个面板将它们封装起来?好的,谢谢大家的帮助。有了这些信息和提示,我想我能想出一些办法。谢谢!