以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  新手提问2  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=76992)

--  作者:3232121table
--  发布时间:2015/11/9 14:38:00
--  新手提问2
"Collection was modified; enumeration operation may not execute."  我打开项目后,在目录树中点选打开某一窗口时,就出现的报告窗,关闭该窗之后,这时打开任何窗口都正常。不再有该报警,请问,这一般是什么问题引起的?
--  作者:大红袍
--  发布时间:2015/11/9 14:39:00
--  
你写了什么代码?贴出来。
--  作者:3232121table
--  发布时间:2015/11/9 16:23:00
--  

目录树窗口AfterLoad

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode
Dim wr As String
For Each dt As DataTable In DataTables
    nd = Trv.Nodes("统计年份")
    wr = dt.Name
    If wr.Substring(0,1) = "d" Then
        nd = nd.Nodes.Add(wr)
        nd.nodes.add("表A")
        nd.Nodes.Add("表B")
        nd.Nodes.Add("表C")
    End If
Next

treeView控件的Nodemouseclick:

Dim ne As String
Dim s As String
Dim trv As WinForm.TreeView = Forms("目录树").Controls("TreeView1")
ne = trv.SelectedNode.Name
For Each dt As DataTable In DataTables
    s = dt.Name
    If s = ne Then
        Forms("主窗口").Open()
Tables("主窗口_Table1").DataSource = DataTables(ne) \'动态绑定数据表
Dim a As Integer=DataTables(ne).DataCols.Count
Dim i As Integer
For i=1 To a-1
    Tables("主窗口_Table1").Cols(i).Width=30
Next
With Tables("主窗口_Table1")
    .MergeMode = MergeModeEnum.Standard \'标准合并模式
    .MergeCols.Clear() \'清除原来的合并列
    .MergeCols.Add("员工姓名") \'加入要合并的列
    \'.MergeSort = "员工姓名" \'设置合并模式下的排序方式
    .AllowMerge = True \'启用合并模式
End With
    End If
Next


--  作者:大红袍
--  发布时间:2015/11/9 16:29:00
--  

For Each dt As DataTable In DataTables
    s = dt.Name
    If s = ne Then
        Forms("主窗口").Open()
        Tables("主窗口_Table1").DataSource = DataTables(ne) \'动态绑定数据表
        Dim a As Integer=DataTables(ne).DataCols.Count
        Dim i As Integer
        For i=1 To a-1
            Tables("主窗口_Table1").Cols(i).Width=30
        Next
        With Tables("主窗口_Table1")
            .MergeMode = MergeModeEnum.Standard \'标准合并模式
            .MergeCols.Clear() \'清除原来的合并列
            .MergeCols.Add("员工姓名") \'加入要合并的列
            \'.MergeSort = "员工姓名" \'设置合并模式下的排序方式
            .AllowMerge = True \'启用合并模式
        End With
    End If
Next

 

改成

For Each dt As DataTable In DataTables
    s = dt.Name
    If s = ne Then
        Forms("主窗口").Open()
        Tables("主窗口_Table1").DataSource = DataTables(ne) \'动态绑定数据表
        Dim a As Integer=DataTables(ne).DataCols.Count
        Dim i As Integer
        For i=1 To a-1
            Tables("主窗口_Table1").Cols(i).Width=30
        Next
        With Tables("主窗口_Table1")
            .MergeMode = MergeModeEnum.Standard \'标准合并模式
            .MergeCols.Clear() \'清除原来的合并列
            .MergeCols.Add("员工姓名") \'加入要合并的列
            \'.MergeSort = "员工姓名" \'设置合并模式下的排序方式
            .AllowMerge = True \'启用合并模式
        End With
        Exit For
    End If
Next

 


--  作者:3232121table
--  发布时间:2015/11/11 9:56:00
--  
谢谢你的耐心解疑!好了