我有网格数据。从视图移动到另一个视图时,我正在清除现有列并添加新列。执行下面的行时会抛出IndexOutOfRange
异常。
dataGridView1.Columns.Clear()
如果dataGridView1.Columns
为null,那么我应该得到NULLReference异常。在语句中,我没有索引到列集合,只调用clear()
方法。我不明白为什么抛出IndexOutofRange
异常。
另一个棘手的问题是我修改了代码
try
{
dataGridView1.Columns.Clear();
}
catch(Exception ex)
{
dataGridView1.Columns.Clear();
}
在try块中它抛出异常,并且它正在进入Catch块,但是在catch块中,同样的语句正在执行而没有任何问题,这使得我理解这个问题变得更加复杂。 请解释为什么会这样。
答案 0 :(得分:0)
首先,你不应该把代码放入catch块 - 你永远不会知道出现了哪些副作用! ; - )
现在,我想这很大程度上取决于数据网格视图的创建方式(自动,手动)以及用作数据源的内容(绑定源,数据表......)。
您可能想尝试dataGridView1.DataSource = null;
,然后(重新)再次分配来源。
希望这有帮助。
答案 1 :(得分:0)
我不知道你是否有任何绑定或DataTable作为DataSource ......但这可能有所帮助:
dataGridView1.DataSource = null;
答案 2 :(得分:0)
尝试
切换gridview属性AutoGenerateColumns off
答案 3 :(得分:0)
就个人而言,我会设置一些检查点,在你调用抛出异常的代码之前显示它们中的内容。你在设置吗?
dataGridView1.ColumnCount
某个地方到了一个不好的数字?同时查看.Count
。
答案 4 :(得分:0)
我在尝试清除未绑定的datagridview
的行时遇到了类似的问题datagridview1.Rows.Clear
检查您的datagridview是否未处于编辑模式。我解决了在rows.clear
之前添加以下行的问题datagridview1.EndEdit()