快速介绍我的问题来源:
我有一个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块中。没有绑定与网格或特殊功能相关联的重载默认行为。
答案 0 :(得分:0)
问题在于打字(真正的愚蠢疏忽)。 DataGridViewColumn
没有默认的单元格模板,因此尝试向列添加行失败。使用DataGridViewTextBoxColumn
将其清除。