110,499
社区成员
发帖
与我相关
我的任务
分享
public void set_ControlsColl()
{
//gouboxItem这是一个groupbox控件
TableLayoutPanel tabPanel = new TableLayoutPanel();
//起始值设为三个单元格
tabPanel.ColumnCount = 3;
this.gouboxItem.Controls.Add(tabPanel);
tabPanel.CellPaint += new TableLayoutCellPaintEventHandler(tabPanel_CellPaint);
tabPanel.Dock = DockStyle.Fill;
btn_tableControl();
}
/// <summary>
/// 重绘单元格颜色
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void tabPanel_CellPaint(object sender, TableLayoutCellPaintEventArgs e)
{
Pen pp = new Pen(Color.White);
e.Graphics.DrawRectangle(pp, e.CellBounds.X, e.CellBounds.Y, e.CellBounds.Width,
e.CellBounds.Height);
}
public void btn_tableControl()
{
int iClickedTimes = 0;
TableLayoutPanel tabPanel = (TableLayoutPanel)(this.gouboxItem.Controls[0]);
tabPanel.ColumnCount = (iClickedTimes + 1) * 3;
// tabPanel.AutoSize = true;
//增加button1
Button btn1 = new Button();
btn1.Name = "button" + (iClickedTimes * 3 + 1).ToString();
btn1.Text = "buttonText" + (iClickedTimes * 3 + 1).ToString();
tabPanel.Controls.Add(btn1, 0, iClickedTimes);
//tabPanel.SetRowSpan(btn1, 2);//跨两行
//增加button2
Button btn2 = new Button();
btn2.Name = "button" + (iClickedTimes * 3 + 2).ToString();
btn2.Text = "buttonText" + (iClickedTimes * 3 + 2).ToString();
tabPanel.Controls.Add(btn2, 1, iClickedTimes);
//增加button3
Button btn3 = new Button();
btn3.Name = "button" + (iClickedTimes * 3 + 3).ToString();
btn3.Text = "buttonText" + (iClickedTimes * 3 + 3).ToString();
tabPanel.Controls.Add(btn3, 1, iClickedTimes);
}
以上是我代码
问题是我有两个单元格的宽度是一制的,还一个单元格宽度是自动缩放的,宽度比较大! 请问大家怎么设置才能使TableLayoutPanel的单元格宽度一制!
昨天压宝赚一百分,当散分了!
/// <summary>
/// 设置网格大小
/// </summary>
public virtual void SetGridSize()
{
int width = this.tableLayoutPanel1.Width; //宽度
int height = this.tableLayoutPanel1.Height; //高度
//行数列数
int rowcount = this.tableLayoutPanel1.RowCount;
int columncount = this.tableLayoutPanel1.ColumnCount;
if (this.tableLayoutPanel1.CellBorderStyle == TableLayoutPanelCellBorderStyle.Single)
{
width -= (columncount + 1); //减去条线的宽度
height -= (rowcount + 1);
}
//获取余数
int rowremainder = height % rowcount; //余数
int colremainder = width % columncount;
//AVG
int rowheight = height / rowcount;
int columnwidth = width / columncount;
//设置行高
for (int i = 0; i < rowcount; i++)
{
RowStyle rs = tableLayoutPanel1.RowStyles[i];
rs.SizeType = SizeType.Absolute;
if (i < rowremainder)
{
rs.Height = rowheight + 1; //把多余的数平均一下,用float类型计算会有点问题,所以干脆用int
}
else
{
rs.Height = rowheight;
}
}
//设置列宽
for (int j = 0; j < columncount; j++)
{
ColumnStyle cs = tableLayoutPanel1.ColumnStyles[j];
cs.SizeType = SizeType.Absolute;
if (j < colremainder)
{
cs.Width = columnwidth + 1;
}
else
{
cs.Width = columnwidth;
}
}
}