我使用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;
}
Run Code Online (Sandbox Code Playgroud)
我看到你是一个非常新的海报。这里的行为准则是,您实际上应该展示您尝试过的内容并查明技术问题。不要只是以这种方式提出问题(特别是那些使您看起来甚至没有尝试过的问题)。
话虽如此,并尝试帮助您,您最好自己绘制单元格边框。遵循以下内容,然后进行自定义:
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));
}
Run Code Online (Sandbox Code Playgroud)
在设计时:

在运行时:

小智 5
实际上,TableLayoutPanel确实支持您想要的BorderStyle属性。例如:
tableLayoutPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
Run Code Online (Sandbox Code Playgroud)
装饰有:
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
Run Code Online (Sandbox Code Playgroud)
因此Intellisense不会向您显示它,但已对其进行了记录且可以正常运行。我无法理解为什么它是不可浏览的。
| 归档时间: |
|
| 查看次数: |
20764 次 |
| 最近记录: |