这似乎是一个非常奇怪的问题,但也许我只是遗漏了一些明显的东西。
我把所有东西都剥去了骨头。获取Windows窗体并在其上放置DataGridView。在_Load事件中,输入以下代码:
List<Mystery> myst = new List<Mystery>();
//myst.Add(new Mystery() { Name = "First" });
dataGridView1.DataSource = myst;
dataGridView1.DataSource = null;
myst.Clear();
myst.Add(new Mystery() { Name = "First" });
myst.Add(new Mystery() { Name = "Second" });
myst.Add(new Mystery() { Name = "Third" });
dataGridView1.DataSource = myst;
这个班似乎不相关,我用过:
class Mystery
{
public string Name { get; set; }
}
当我加载表单时,如果我单击其中一行,我会收到此错误:“索引-1没有值”。
但是,如果我取消注释第二行代码,我就没有问题。
或者,如果我注释掉第三行代码,它就可以正常工作。
或者,如果不是清除列表,而是重新实例化。
如果第一次将特定列表绑定到网格时,似乎会导致错误,该列表中的对象为零。
通过检查列表是否具有&gt;来使代码工作变得非常容易。 0对象,如果没有,将网格绑定为null,但这似乎不优雅,我想知道错误发生的原因。在将列表绑定到网格之前,检查0计数是否只是一般规则?或者我的设置或系统中有什么奇怪的东西?