C#DataGridView Colspan

我想用datagridviewdynamic创build一个类似Excel的datagridview ,但是我希望可以select将colspan设置为某些列。

这个想法只是显示数据,用户不会input任何内容,但它应该在表/电子表格中。 如果我不能有与colspan datagridview是否有任何其他types的表类工具,有一个colspan

另一方面,将从数据库查询结果dynamic创build列。

我正在使用Windows窗体。

有任何想法吗?

你可以看看TableLayoutPanel类 ,它有一个TableLayoutPanel.SetColumnSpan方法 。

下面是一个代码示例,它跨越了两列中的一个文本框:

 var dt = new DataTable(); dt.Columns.Add("Id"); dt.Columns.Add("Value1"); dt.Columns.Add("Value2"); dt.Rows.Add(1, "aa", "xx"); dt.Rows.Add(2, "bb","yy"); dt.Rows.Add(3, "cc", "zz"); tableLayoutPanel1.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single; tableLayoutPanel1.ColumnCount = 4; tableLayoutPanel1.AutoSize = true; for (int i = 0; i < dt.Columns.Count; i++) { var l = new Label(); l.Dock = DockStyle.Fill; l.Text = dt.Columns[i].ColumnName; tableLayoutPanel1.Controls.Add(l, i, 0); } var emptyLabel = new Label(); emptyLabel.Text = "Empty label"; tableLayoutPanel1.Controls.Add(emptyLabel, 4, 0); for (int i = 0; i < dt.Rows.Count; i++) { for (int j = 0; j < dt.Rows[i].ItemArray.Length; j++) { var tb = new TextBox(); tb.Multiline = true; tb.Dock = DockStyle.Fill; tb.Text = dt.Rows[i][j].ToString(); tableLayoutPanel1.Controls.Add(tb, j, i+1); if (i == 1 && j == 2) tableLayoutPanel1.SetColumnSpan(tb, 2); } }