【问题标题】:C# form upon activating when in minimized state shows incomplete form for few seconds处于最小化状态时激活的 C# 表单在几秒钟内显示不完整的表单
【发布时间】:2016-09-27 22:01:52
【问题描述】:

当它处于最小化状态时,我们遇到了一个 c# 表单 UI 问题。表单内的控件很少,应用从不同表单的最小化状态进入正常状态 - 在此过渡阶段,UI 显示不完整 2-3 秒,并且明显可见。

我们正在使用 .Activate();使其恢复正常状态。我们看到黑色方块是表单中存在的所有不同控件。在构建完整的 UI 之前,有没有办法避免这个不完整的 UI?感谢您的建议。

【问题讨论】:

  • 有些东西严重阻碍了这扇窗户的绘画。因此,当您使用 Opacity 或 TransparencyKey 属性时,您会看到未绘制的控件看起来是黑色的。为什么这段代码这么慢,从截图中永远猜不到。
  • ...所以你能发布一个重现问题的代码的缩减 sn-p 吗?

标签: c# winforms


【解决方案1】:

如果您在表单应用程序中使用了 transparentkey 属性,请尝试删除该属性并尝试使用 yogi 的代码。

【讨论】:

    【解决方案2】:

    在表单中声明以下属性 -

    protected override CreateParams CreateParams
    {
       get
       {
           CreateParams objCreateParams = base.CreateParams;
           objCreateParams .ExStyle = 0x02000000;
           return objCreateParams ;
        }
    }
    

    使用此属性,控件的绘制将保持不可见,一旦绘制完控件就会显示。

    【讨论】:

    • 在某些 Windows 机器上(在 win7、win10 上),添加此项会导致应用程序启动时出现 win32exception。 ************** 异常文本 ************** System.ComponentModel.Win32Exception (0x80004005):System.Windows.Forms 中的参数不正确。 Form.UpdateLayered() 在 System.Windows.Forms.Form.OnHandleCreated(EventArgs e) 在 System.Windows.Forms.Control.WmCreate(Message& m) 在 System.Windows.Forms.Control.WndProc(Message& m)
    • @rajkumaradass - 它发生在所有机器还是特定机器上?可能这可能会有所帮助 - angryhacker.com/blog/archive/2010/07/21/… 或者可能是这样 - stackoverflow.com/questions/31033815/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    相关资源
    最近更新 更多