C# TableLayoutPanel 要设置行列,然后把每行每列的大小设置成一样的,该怎么弄?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# TableLayoutPanel 要设置行列,然后把每行每列的大小设置成一样的,该怎么弄?相关的知识,希望对你有一定的参考价值。

就像这样,行列的数值是不确定的,游戏有一个自定义,里面可以设置行列,主要问下怎么把每行每列的大小设成一样的(自动的),另外,form1的大小是可以变得

你把行和列设置成百分比,而不是固定数值就可以了 参考技术A 在代码里面直接给panel的属性赋值就行了追问

哪个属性?怎么赋值?能给一个例子吗?谢了

参考技术B 设置行宽和行高 就可以了,可以设置它们的比例和具体尺寸追问

这样吗,但是结果是这样的

form拉大了后是这样的

追答

你把每个按钮 的DOCK属性设置为Fill

追问

恩,设置过了,在creatBotton里面有设置过

追答

你这种情况应该是 Row和Column的百分比没有设置正确 应该每行都要设置33.33%,每列都要33.33%
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.31332F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.34334F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.34334F));

this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));

追问

我上面用了foreach()了啊,应该把每行和没列都设置过了的,我放弃这个容器了,改用flowlayoutpanel了

追答

this.tableLayoutPanel1 的Dock属性设置了 Fill吗?

C#导出涉及行列合并的复杂的Excel数据

一、导出数据格式

技术分享

 

二、实现代码

  1  public ActionResult ExportFundDataToExcel(Guid taskid, string taskname)
  2         {
  3             var dt = ProjectFundCalculateService.getFundDataTabe(taskid);
  4             if (null == dt)
  5             {
  6                 return Fail("当前任务没有要导出的经费数据");
  7             }
  8             if (dt.Rows.Count < 1)
  9             {
 10                 return Fail("当前任务没有要导出的经费数据");
 11             }
 12             var fileHtml = new StringBuilder();
 13             fileHtml.Append("<table border=\"1\" style=\"table-layout:fixed;\" cellspacing=‘0‘ cellpadding=‘0‘>");
 14             fileHtml.Append("<tr>");
 15             fileHtml.Append("<td colspan=\"10\" style=\"font-size: 16px; font-family: 宋体; text-align: center; height: 30px;\">");
 16             fileHtml.AppendFormat(" <strong> {0}经费概算</strong>", taskname);
 17             fileHtml.Append("</td>");
 18             fileHtml.Append(" </tr>");
 19             fileHtml.Append("<tr>");
 20             fileHtml.Append(" <td colspan=\"10\" style=\"font-size: 16px; text-align: center; height: 30px;\">");
 21             fileHtml.Append(" 计费依据:四川省物价局、四川省财政厅《关于调整环境监测服务收费标准的函》(川价函〔2007〕6号)附件“四川省环境监测服务收费标准”。");
 22             fileHtml.Append(" </td>");
 23             fileHtml.Append(" </tr>");
 24             fileHtml.Append(" <tr>");
 25             fileHtml.Append(" <td colspan=\"8\"></td>");
 26             fileHtml.Append(" <td colspan=\"2\" style=\"text-align: center;font-size: 12px;\">单位:元</td>");
 27             fileHtml.Append(" </tr>");
 28             fileHtml.Append("<tr>");
 29             for (int i = 0; i < dt.Columns.Count; i++)
 30             {
 31                 fileHtml.AppendFormat("<td>{0}</td>", dt.Columns[i].ColumnName);
 32             }
 33             fileHtml.Append(" </tr>");
 34             int rowspan = 1;//要合并的列数
 35             string flag = "";//rowspan="$flag"的初始值,后面用rowspan替换
 36             for (var j = 0; j < dt.Rows.Count; j++)
 37             {
 38                 fileHtml.Append("<tr>");
 39                 if (dt.Rows[j][0].ToString() == "小计" || dt.Rows[j][0].ToString() == "监测费用合计" || dt.Rows[j][0].ToString() == "总计")
 40                 {
 41                     fileHtml.AppendFormat("<td colspan=\"2\" style=\"text-align: center;\">{0}</td>", dt.Rows[j][0]);
 42                     var sumtotal = dt.Rows[j][2].ToString();
 43                     if (dt.Rows[j][0].ToString() == "总计")
 44                     {
 45                         sumtotal = new EcanRMB().CmycurD(sumtotal) + "(¥" + sumtotal + "元)";
 46                     }
 47                     fileHtml.AppendFormat("<td colspan=\"8\" style=\"text-align: center;\"><strong>{0}</strong></td>", sumtotal);
 48                 }
 49                 else if (dt.Rows[j][0].ToString() == "报告编制费" || dt.Rows[j][0].ToString() == "车船费")
 50                 {
 51                     fileHtml.AppendFormat("<td colspan=\"2\" style=\"text-align: center;\">{0}</td>", dt.Rows[j][0]);
 52                     fileHtml.AppendFormat("<td colspan=\"7\" style=\"text-align: center;\">{0}</td>", dt.Rows[j][2]);
 53                     fileHtml.AppendFormat("<td style=\"text-align: center;\"><strong>{0}</strong></td>", dt.Rows[j][dt.Columns.Count - 1]);
 54                 }
 55                 else if (dt.Rows[j][1].ToString() == "人工费")
 56                 {
 57 
 58                     rowspan++;
 59                     //人工费第一列默认合并
 60                     fileHtml.AppendFormat("<td style=\"text-align: center;\">{0}</td>", dt.Rows[j][1]);
 61                     fileHtml.AppendFormat("<td colspan=\"7\" style=\"text-align: center;\">{0}</td>", dt.Rows[j][2]);
 62                     fileHtml.AppendFormat("<td style=\"text-align: center;\">{0}</td>", dt.Rows[j][dt.Columns.Count - 1]);
 63 
 64                     fileHtml.Replace("$" + flag, rowspan.ToString());
 65                     rowspan = 1;
 66                     flag = "";
 67 
 68                 }
 69                 else
 70                 {
 71                     if (j > 0)
 72                     {
 73                         //如果当前列与上一列的值相等则合并,否则初始化rowspan和flag
 74                         if (dt.Rows[j][0].ToString() == dt.Rows[j - 1][0].ToString())
 75                         {
 76                             rowspan++;
 77                         }
 78                         else
 79                         {
 80                             fileHtml.Replace("$" + flag, rowspan.ToString());
 81                             if (rowspan > 1)
 82                             {
 83                                 rowspan = 1;
 84                                 flag = "";
 85                             }
 86                         }
 87                     }
 88                     for (var k = 0; k < dt.Columns.Count; k++)
 89                     {
 90                         if (k == 0 && rowspan == 1)
 91                         {
 92                             flag = dt.Rows[j][0].ToString();
 93                             fileHtml.AppendFormat("<td rowspan=\"${0}\" style=\"text-align: center;\">{1}</td>", flag, dt.Rows[j][k]);
 94                         }
 95                         else if (k == 0 && rowspan > 1)
 96                         {
 97                             fileHtml.Append("");
 98                         }
 99                         else
100                         {
101                             fileHtml.AppendFormat("<td style=\"text-align: center;\">{1}</td>", j, dt.Rows[j][k]);
102                         }
103                     }
104 
105                 }
106                 fileHtml.Append("</tr>");
107 
108             }
109             fileHtml.Append("</table>");
110             byte[] fileContents = Encoding.Default.GetBytes(fileHtml.ToString());
111             return File(fileContents, "application/ms-excel", taskname + ".xls");
112 
113         }

 

以上是关于C# TableLayoutPanel 要设置行列,然后把每行每列的大小设置成一样的,该怎么弄?的主要内容,如果未能解决你的问题,请参考以下文章

c#操作tableLayoutPanel

C#怎样让tablelayoutpanel中控件居中显示

c# tableLayoutPanel 合并单元格后出来多余的线怎么处理

c# tableLayoutPanel 划分的每一行我无法拖动线改变其位置,为啥?

TableLayoutPanel隐藏指定的行和列 求指导

c# tablelayoutpanel如何能调整每一列的比例? 我看不到中间的那一根根线