【问题标题】:Issues with managing DataGridView rows管理 DataGridView 行的问题
【发布时间】:2013-05-09 17:56:10
【问题描述】:

简单介绍一下我的问题根源:

我有一个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);
    }
}

现在,这就是我的问题所在。我执行 exact 相同的操作来添加和删除网格中的行,但调整了边距和阈值以考虑行尺寸而不是列尺寸.唯一的区别是我正在查看面板的高度而不是宽度:

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

【问题讨论】:

    标签: c# winforms datagridview


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 2010-11-10
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      相关资源
      最近更新 更多