2

我的问题是我的 Access 2002 应用程序中的树视图。

当我打开表单时,它已经被填充了。这很奇怪,因为添加节点的唯一代码绑定到按钮。

此外,仅显示部分数据,当我在选项卡 () 之间切换时,树视图中的数据重复/双倍。然后当我点击任何其他选项卡时,Access 会立即崩溃,就像 * zap *

是否有必要一直清理树视图?

任何其他想法可能是什么问题 - 也欢迎解决方案;)

干杯,拉蒙

4

6 回答 6

1

我遇到了这个问题并将其追溯到树视图控件不喜欢在标签页上。您将不得不重新设计表单以将树视图保留在选项卡之外。

如果它必须出现在标签页上,那么您可以尝试.......

将树视图放在选项卡控件后面。将选项卡控件的背景设置为透明。在选项卡控件的“更改时”事件中,获取它以检查正在选择哪个选项卡。如果它是您想要的选项卡,则将树视图设置为可见,否则将其隐藏

于 2009-09-30T10:08:31.407 回答
1

我使用 VCL (Delphi/BCB) 包装器作为选项卡上的树视图控件(TPageControl 上的 TTreeView)。

一旦我调用 TreeView1.Items.Clear ,我的程序就会挂起。但仅在“某些”情况下!特别是如果我展开一个项目然后尝试 Clear() 所有项目。如果我从不触摸任何节点(或仅滚动),那很好。

我发现在调用 Items.Clear 之前将所选节点设置为 NULL 为我解决了这个问题。

有趣的是,调用 Clear() 导致一些 OnChange 事件由于某种原因发生,这是意料之外的(因为我们无论如何都要删除所有节点!)...

于 2010-06-22T15:52:17.407 回答
0

首先,找出为什么 TreeView 在您还没有告诉它时正在加载。单步执行您的代码。你必须先解决这个问题。

其次,如果您不加载 TreeView 但切换选项卡,表单是否会崩溃?

于 2009-01-21T23:53:17.353 回答
0

谢谢你的建议。

我仍然没有发现为什么将数据加载到 TreeView 中,但我想出了一个解决方案。

首先,我在加载表单时开始清理 TreeView。
这确实对稳定性有好处。现在可以在不崩溃 Access 的情况下四处点击。

当数据加载到 TreeView 时,旧行为再次出现。在选项卡之间切换会添加更多数据并最终导致 Access 崩溃。

似乎 TreeView(6.0 版)正在重建自身而没有正确清理。
基于这个假设,我现在在切换到包含选项卡时清除并重建 TreeView。

我仍然对根本原因感兴趣,但它现在起作用了。

再次感谢,拉蒙

于 2009-01-22T11:12:16.327 回答
0

我不敢相信这个问题仍然存在并且微软没有发布任何修复程序!我在运行 Office 2010 的 Windows 8.1 中遇到了同样的问题

无论如何,我达到的最简单的解决方法(并且可能会节省资源)是在表单的“当前事件”中构建当前活动选项卡的 TreeView。

Private Sub Form_Current()
    Select Case Me.tabCompany.Value 'Return Page Index of active page
        Case 0  ' Page Index for Page 1.
            Call TVPage1
        Case 1  ' Page Index for Page 2.
            Call TVPage2
    End Select
End Sub

要记住的另一件事是在选项卡的“更改事件”中从一个页面切换到另一个页面时运行相同的例程来更新 TreeView:

Private Sub tabCompany_Change()
    Select Case Me.tabCompany.Value 'Return Page Index of active page
        Case 0  ' Page Index for Page 1.
            Call TVPage1
        Case 1  ' Page Index for Page 2.
            Call TVPage2
    End Select
End Sub

干杯!

于 2014-01-21T00:59:01.163 回答
0

在使用不同选项卡上的 TreeView 控件在选项卡之间切换时,MsAccess 2016/Win10 仍然崩溃。我最初的错误方法是在离开选项卡清除节点- 就像我对位于不同选项卡上的子表单一样(节省资源)。

Private Sub MainTabCtrl_Change()
'Activate selected/called Tab
Select Case Nz(Me![MainTabCtrl],0)
Case 0 'Tab 1
    Me![SubFormTab1].Form.RecordSource = "tblSubFormData"
    Me.TreeViewTab1.Object.Nodes.Clear
    Call BuildTreeView1
Case 1 'Tab 2
    Me.TreeViewTab2.Object.Nodes.Clear
    Call BuildTreeView2
End Select
'Deactivate leaving Tab
Select Case Nz(Me![PriorTab],0)
Case 0 'Tab 1
    Me![SubFormTab1].Form.RecordSource = ""
    'Do nothing with TreeView1
Case 1 'Tab 2
    'Do nothing with TreeView2
End Select
Me![PriorTab] = Me![MainTabCtrl]
End Sub

在调用 Tab 时清除 TreeView 节点(如果需要),而不是在离开 Tab 时清除 TreeView 中的节点。

于 2022-02-14T19:56:09.317 回答