我正在使用TableLayoutPanel,例如,如果我有3行和5列。我想只绘制整个面板的外边框。默认情况下,面板提供CellBorderStyle,它将所有边框边框添加到所有可用单元格中。有什么方法可以只设置外边界吗?
我在下面提供了示例代码。
TableLayoutPanel tblPanel = new TableLayoutPanel;
tblPanel.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
Label lblName;
TextBox txtName;
Button btnAdd;
int colCnt = 0;
for(int rw =0; rw < 3; rw++)
{
lblName = new Label();
lblName.Name = "mylabel" + rw.ToString();
tblPanel.Controls.Add(lblName, colCnt, rw);
colCnt++;
txtName = new TextBox();
txtName.Name = "mytext" + rw.ToString();
tblPanel.Controls.Add(txtName, colCnt, rw);
colCnt++;
btnAdd = new Button();
btnAdd.Name = "mybutton" + rw.ToString();
tblPanel.Controls.Add(btnAdd, colCnt, rw);
colCnt = 0;
}
答案 0 :(得分:4)
我看到你是一张非常新的海报。这里的行为准则是你真的应该展示你所尝试的并找出技术问题。不只是以这种方式提出问题(特别是那些让你看起来甚至没有尝试过的东西)。
那就是说,并试图帮助你,你最好自己画细胞边界。这是以下几行中的内容,然后自定义:
public TableForm() {
InitializeComponent();
this.tableLayoutPanel.CellPaint += tableLayoutPanel_CellPaint;
}
private void tableLayoutPanel_CellPaint(object sender, TableLayoutCellPaintEventArgs e) {
e.Graphics.DrawLine(Pens.Black, e.CellBounds.Location, new Point(e.CellBounds.Right, e.CellBounds.Top));
}
在设计时:
在运行时:
答案 1 :(得分:4)
TableLayoutPanel确实支持BorderStyle属性,这就是你想要的。例如:
tableLayoutPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
装饰着:
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
所以Intellisense不会向你展示它,但它是有记录的并且有效。我不知道它为什么不可浏览。
答案 2 :(得分:2)
TableLayOutPanel本身不支持除了CellBorderStyle之外的边框属性,这不是你想要的。
我建议您将TableLayOutPanel放入Panel控件并将TableLayOutPanel的Dock属性设置为Fill。
然后将Panel的BorderStyle设置为您想要的(FixedSingle或Fixed3D)
答案 3 :(得分:1)