我制作了一个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;
}
}
答案 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
班级可以设置BorderWidth
和BorderColor
个属性。
(注意:我用来绘制边框的方法是最快的。创建一个具有所需宽度的笔不能很好地工作,因为GDI +将线条的中心放在指定的坐标上。)
答案 1 :(得分:0)
更好的方法是使用嵌套的TableLayoutPanel
。从设计师创建它并将标签放在里面。步骤:
TableLayoutPanel
(父面板)。TableLayoutPanel
(子面板)。CellBorderStyle
到Single
。Margin
设置为0,0,0,0
。 你会得到这个效果: