2

在 C# Winforms 中,我想使用 DataGridView 作为一个简单的小部件来存储要显示给用户的信息。为此,我想创建一个 5x10 单元格的表格。

经过一些研究,解决方案往往允许一次只添加一行或一列。我希望整个网格最初立即创建,所以我可以开始用数据填充它,就像使用标准 C# 2D 数组一样。

解决这个问题的最简单方法是什么?函数头可能如下所示:

createCells(DataGridView dgv, int cols, int rows) {}

如果需要,以后可以快速且易于将列和行更改为更大或更小的数字。

4

2 回答 2

4

顺便说一句,可能会出现如下错误:

列的 FillWeight 值之和不能超过 65535

为避免这种情况,请将AutoGenerateColumns属性false设置为 ,并为生成的每一列设置FillWeight为:1

dgv.AutoGenerateColumns = false;
for (int i = 1; i <= columns; i++)
{
    dgv.Columns.Add("col" + i, "column " + i);
    dgv.Columns[i - 1].FillWeight = 1;
}
for (int j = 0; j < rows; j++)
    dgv.Rows.Add();
于 2012-08-04T05:14:31.840 回答
2

您可以通过这种方式使用 for 循环:

    private DataGridView DGV_Creation(DataGridView dgv, int columns, int rows)
    {
        for (int i = 1; i <= columns; i++)
        {
            dgv.Columns.Add("col" + i, "column " + i);
        }
        for (int j = 0; j < rows; j++)
        {
            dgv.Rows.Add();
        }
        return dgv;
    }

调用它:

this.dataGridView1 = DGV_Creation(dataGridView1, 5, 10); // 5 columns, 10 rows (empty rows)

或者:

    private void DGV_Creation(ref DataGridView dgv, int columns, int rows)
    {
        for (int i = 1; i <= columns; i++)
            dgv.Columns.Add("col" + i, "column " + i);
        for (int j = 0; j < rows; j++)
            dgv.Rows.Add();
    }

调用它:

DGV_Creation(ref this.dataGridView1, 5, 10); //5 columns, 10 rows (empty rows)
于 2012-08-04T04:59:00.670 回答