设置标签边框的大小

时间:2013-02-04 17:10:17

标签: c# winforms label border

我制作了一个9乘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;
  }
}

2 个答案:

答案 0 :(得分:1)

如果是我,我更喜欢画自己的桌子。但是如果你需要使用你的标签,我建议你画出你的边框:

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班级可以设置BorderWidthBorderColor个属性。

(注意:我用来绘制边框的方法是最快的。创建一个具有所需宽度的笔不能很好地工作,因为GDI +将线条的中心放在指定的坐标上。)

答案 1 :(得分:0)

更好的方法是使用嵌套的TableLayoutPanel。从设计师创建它并将标签放在里面。步骤:

  • 放置一个3x3 TableLayoutPanel(父面板)。
  • 在父面板的每个单元格中放置一个3x3 TableLayoutPanel(子面板)。
  • 为父表和子表设置CellBorderStyleSingle
  • 将子表的Margin设置为0,0,0,0

你会得到这个效果:

enter image description here