【发布时间】:2011-06-20 22:35:04
【问题描述】:
当我尝试在虚拟模式下向 DataGridView 添加新行时:
dataGridViewX1.Rows.Add(new string[] { "Parker", "Seattle" });
出现以下异常:
操作无效时 DataGridView 控件处于虚拟状态 模式?
【问题讨论】:
标签: c# winforms datagridview
当我尝试在虚拟模式下向 DataGridView 添加新行时:
dataGridViewX1.Rows.Add(new string[] { "Parker", "Seattle" });
出现以下异常:
操作无效时 DataGridView 控件处于虚拟状态 模式?
【问题讨论】:
标签: c# winforms datagridview
当DataGridView 在Virtual mode (DataGridView.VirtualMode = true) 中时,这意味着DataGridView 的内容是通过DataGridView 上公开的事件从其自身以外的来源提供的。如果您打算让 DataGridView 处于虚拟模式,则需要将新信息添加到底层源,然后告诉 DataGridView 还有另一行,如下所示:
// add information to the underlying source
this.dataGridView.RowCount++;
如果您不打算在虚拟模式下使用DataGridView,您可以通过将DataGridView.VirtualMode 设置为false 来关闭虚拟模式。
【讨论】:
您需要使用数据源添加新行,它会自动显示在DataGridView中。
【讨论】:
您可能已经完成了其他问题所建议的所有操作,但将 YourDataGridView.DataSource 设置为某个位置。
不能设置为 virtual,否则当你尝试设置 RowCount 时会得到类似的消息,而当你尝试添加时会得到准确的消息。
如果您迄今为止“误用”DataSource 作为事件处理程序可用于寻址数据源的“邮箱”实例变量,请考虑将其填充到 Tag 属性中,并使用该属性中所需的引用(使用适当的类型转换)。
【讨论】: