【发布时间】:2013-01-30 22:18:55
【问题描述】:
我在应用程序中有一个 datagridview。 datagridview 有一个数据表作为它的数据源。
填充datagridview后,我有一个设置列属性(宽度、可见、只读)的过程。
此过程适用于我的开发环境。但是,在我的生产环境中,我收到以下消息:
操作无效,因为它会导致对 SetCurrentCellAddressCore 函数的可重入调用。
我在 Visible = False 处将问题缩小到此代码:
For i As Integer = 0 To D.Columns.Count - 1
D.Columns(i).Width = 50
D.Columns(i).DefaultCellStyle.Alignment=DataGridViewContentAlignment.MiddleLeft
D.Columns(i).Visible = False
Next
该错误仅发生在第 1 列。但是,如果我将第 1 列排除为不可见,则当我将第 1 列设置为只读时,应用程序将失败。
我了解重入调用错误是由于正在使用 datagridview 单元格造成的无限循环。但是,该代码在 dev 中有效。我在生产测试中使用了开发数据库的副本,所以问题不应该与数据相关。
当列不可见或只读时,什么会导致重入调用?
【问题讨论】:
-
您正在遍历每一列并设置每一列的属性。因此,如果您将其设置为 false,那么您将把它们全部隐藏起来......
-
我把它们全部隐藏起来,然后让它们中的三个可见。问题是它在设置第二列不可见时失败,然后才到达其他八列。
-
你在哪里让它们可见,我没看到...?
-
三个在我上面显示的代码中可见。我现在正在重新设计 datagridview 后端,因为我认为我的一些问题是由那里的问题引起的。
标签: vb.net datagridview datasource readonly visible