管理DataGridView行的问题

时间:2013-05-09 17:56:10

标签: c# winforms datagridview

快速介绍我的问题来源:

我有一个DataGridView,它是可调整大小的Panel的子级,可以通过用户的鼠标输入进行调整。调整Panel大小后,DataGridView的大小将与其一起镜像。我们的想法是,不是网格的列和行自动调整大小以适应单元格或网格空间的内容,而是列数和行数将由网格的大小决定。行和列的宽度和高度是预先确定的,不需要调整。这一点是让用户快速调整行数和列数。最常见的是代码的短片:Resizing Panel

为了实现这一点,我检查面板是否正在调整大小,并且根据它是在缩小还是在增长,相应地调整列。这里有一些神奇的东西,但它基本上是这样的:

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块中。没有绑定与网格或特殊功能相关联的重载默认行为。

1 个答案:

答案 0 :(得分:0)

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