【问题标题】:Two controls show before the others两个控件显示在其他控件之前
【发布时间】:2012-05-19 01:16:26
【问题描述】:

我在表单上有一个用户控件,我将其用作数据输入表单。我不断地用新数据显示和隐藏它。

通常(并非总是)相同的两个备注框首先在屏幕上显示一秒钟,然后才能看到完整的控件。

我找到了this 链接,我不确定这是否是我的解决方案,但无论如何我不知道在哪里以及何时调用它。

编辑:我注意到它仅在程序空闲几分钟时才会发生。 我可以一个接一个地显示和隐藏控件10次没问题。但如果我隐藏它并在 2-3 分钟后再次显示它,我就会得到这种行为。

我想这与重新连接到 MsSQL 数据库以提取数据所需的时间有关。但是我怎么能告诉这 2 个盒子像那里的父母一样保持不可见,直到父母准备好显示?

【问题讨论】:

  • 在显示控件后但在返回主事件循环之前,您正在做什么?基本上,在控件有机会绘制之前,这听起来像是在发生其他事情,例如数据库访问或其他网络访问。建议是保持控件处于加载状态,但使用 visible=false 直到最后一刻。
  • 我做了TicketsBox.Visible = True 可能的最后一件事......
  • 你是先做TicketsBox.Visible=False 还是一开始就可见?在 Load 事件上设置断点进行检查。
  • 尝试在 VisibleChanged 事件中移动您的 TicketsBox.Visible = True。
  • 除非您有异步绑定,否则页面在完全呈现之前不应开始绘制。您是通过后台工作者绑定异步还是更新数据。如果数据如此动态,以至于您无法将其保存在变量中,而是每次获取都返回数据库?

标签: c# .net vb.net user-controls


【解决方案1】:

这真的很草率,可能有更好的解决方案,但如果你尝试这样的事情会怎样。

If SlowControl.visible = True Then
FastControl1.visible = True
FastControl2.visible = True
End If

我不确定这是否可行,因为我不知道如何复制问题进行测试,但尝试一下,看看它是否会稍微延迟游戏前的 2 并且不显示它们直到其他人出现。

【讨论】:

    猜你喜欢
    • 2014-06-12
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 2012-02-27
    • 1970-01-01
    • 2010-09-05
    相关资源
    最近更新 更多