dataGridView1.Columns.Clear()抛出IndexOutOfRange异常

时间:2016-04-18 12:43:22

标签: c# winforms datagridview

我有网格数据。从视图移动到另一个视图时,我正在清除现有列并添加新列。执行下面的行时会抛出IndexOutOfRange异常。

dataGridView1.Columns.Clear()

如果dataGridView1.Columns为null,那么我应该得到NULLReference异常。在语句中,我没有索引到列集合,只调用clear()方法。我不明白为什么抛出IndexOutofRange异常。

另一个棘手的问题是我修改了代码

    try
     {
         dataGridView1.Columns.Clear();
     }
     catch(Exception ex)
     {
         dataGridView1.Columns.Clear();
     }

在try块中它抛出异常,并且它正在进入Catch块,但是在catch块中,同样的语句正在执行而没有任何问题,这使得我理解这个问题变得更加复杂。 请解释为什么会这样。

5 个答案:

答案 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()