C# 设置标签边框的大小

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 &

我制作了一个由9个标签组成的网格,每个标签都有一个边框。在一行/一列中每3个标签之后,我希望边框比前一个标签更厚。我找不到一个方法来添加这个大小的边框

我在谷歌上搜索,但没有找到任何有用的东西

有人能帮我吗

 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
?有办法在这里发布代码吗?那么这是外部标签的边框还是有一个面板将它们封装起来?好的,谢谢大家的帮助。有了这些信息和提示,我想我能想出一些办法。谢谢!