0

我在应用程序中有一个 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 中有效。我在生产测试中使用了开发数据库的副本,因此问题不应该与数据相关。

当列不可见或只读时,什么会导致重入调用?

4

1 回答 1

0

我要做的是,不是循环遍历datagridview中的每一列,而是遍历源数据表中的列,并使源列的datagridview列不可见,使用列名而不是索引。索引可以洗牌(在摆弄属性时),名称保持不变,除非您更改它们。

我以前遇到过类似的路障。

于 2013-01-30T23:49:31.680 回答