管理DataGridView行的问题

本文关键字:问题 DataGridView 管理 | 更新日期: 2023-09-27 18:12:48

快速介绍我的问题来源:

我有一个DataGridView,它是可调整大小的Panel的子级,可以通过用户的鼠标输入进行调整。当调整Panel的大小时,DataGridView的大小也会随之镜像。其想法是,列和行的数量将由网格的大小决定,而不是网格的列和行自动调整大小以适应单元格或网格空间的内容。行和列的宽度和高度是预先确定的,不需要调整。这样做的目的是让用户快速调整行和列的数量。这可以通过一个代码短片来最好地证明:调整面板的大小

为了实现这一点,我检查面板是否正在调整大小,并根据它是在收缩还是在增长,相应地调整列。这里有一些魔术,但本质上看起来是这样的:

if(panel_width_is_growing)
{
    if(margin >= growing_threshold)
    {
        DataGridViewColumn column = new DataGridViewColumn();
        column.Name = "Run " + (dataGridView.Columns.Count + 1).ToString();
        column.HeaderText = "Run " + (dataGridView.Columns.Count + 1).ToString();
        dataGridView.Columns.Add(column);
    }
}
if(!panel_width_is_growing)
{
    if(margin <= shrinking_threshold)
    {
        dataGridView.Columns.RemoveAt(dataGridView.Columns.Count - 1);
    }
}

现在,这就是我的问题所在。我做了完全相同的事情来添加和删除网格中的行,尽管调整了边距和阈值以考虑行维度而不是列维度。唯一的区别是我看的是面板的高度,而不是宽度:

if(panel_height_is_growing)
{
    if(margin >= row_threshold)
    {
        DataGridViewRow row = new DataGridViewRow();
        row.HeaderCell.Value =  (dataGridView.Rows.Count + 1).ToString();
        dataGridView.Rows.Add(row);              
    }                
}

并且没有出现任何行。。。我搞不清楚这个问题。代码正在命中所有必要的行,并通过断点和步进进行验证。RowCount属性永远不会递增,也不会发出警报,因为整个属性都封装在try-catch块中。并没有与网格相关联的绑定,也没有重载默认行为的特殊函数。

管理DataGridView行的问题

问题出在打字上(一个真正愚蠢的疏忽(。DataGridViewColumn没有默认的单元格模板,因此尝试向列中添加行失败。使用DataGridViewTextBoxColumn将其清除。