在 C# 的 Datagridview 中以编程方式在指定位置添加新列

6

我有一个包含5(0-5)列的datagridview。我从创建的哈希表中检索所有行的值。 现在,我设置了一个条件,如果第4列从哈希表中获取的值为空,则在第4列旁边添加新列,将新添加的列索引设置为5,并且以前为第5列的哈希表值更改为第7列。

我像这样编写代码:

    int number = dataGridView1.Rows.Add();
    dataGridView1.Rows[number].Cells[0].Value = result;                                 //id       
    dataGridView1.Rows[number].Cells[1].Value = newAddress;                             //ip    
    dataGridView1.Rows[number].Cells[2].Value = (string)((Hashtable)ht[1])["value"];    //name
    dataGridView1.Rows[number].Cells[3].Value = (string)((Hashtable)ht[2])["value"];    //description
    if (!ht.ContainsValue(3))
        {
          // Create a Save button column
          DataGridViewImageButtonSaveColumn columnSave = new DataGridViewImageButtonSaveColumn();

          // Set column values
          columnSave.Name = "SaveButton";
          columnSave.HeaderText = "";

          //Add the columns to the grid
          dataGridView1.Rows[number].Cells[4].ReadOnly = false;
          dataGridView1.Columns[5].Add(columnSave);    //im not sure about this codes
          dataGridView1.Rows[number].Cells[6].Value = (string)((Hashtable)ht[4])["value"];    //count

        } 
        else
        {
          dataGridView1.Rows[number].Cells[4].Value = (string)((Hashtable)ht[3])["value"];    //location
          dataGridView1.Rows[number].Cells[5].Value = (string)((Hashtable)ht[4])["value"];    //count
        }

然而,我不确定自己是否做得正确,因为在被注释的那行出现了错误

        dataGridView1.Columns[5].Add(columnSave);    //im not sure about this codes

看起来这段代码有误,请问有人能够指导一下吗?

2个回答

16

你的意思是 dataGridView1.Columns.Insert(5, columnSave); 吗?谢谢,伙计,现在它可以工作了。 - Ren
抱歉,需要再帮忙一下。如果我想隐藏这个列的标题,只是标题而不是行的值。这可能吗? - Ren
不太确定,这有点不寻常。也许是 columnSave.HeaderCell 的属性。或者为 columnSave.HeaderCell.Paint 添加一个处理程序,并在其中什么都不做。或者你可以只设置 columnSave.HeaderText = ""; - Blorgbeard
1
这些只是想法,如果你无法使其工作,应该进行一些调查并提出新的问题。 - Blorgbeard
好的,但现在我遇到了新问题,代码运行良好。但是每当它循环条件时,它将继续插入新列,如果循环100次,则会插入100个新列。你有什么想法如何解决这个问题吗? - Ren
显示剩余2条评论

1
在数据表格的特定列中插入复选框的简单方法:
DataGridViewCheckBoxColumn chk = new DataGridViewCheckBoxColumn();

dataGridView1.Columns.Insert(**certain column number**, chk);

例如,如果您想在第一列添加复选框,则必须输入

dataGridView1.Columns.Insert(0, chk); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接