【问题标题】:c# controls flash on startupc# 控制启动时的闪存
【发布时间】:2015-06-20 13:43:34
【问题描述】:

我有一个标准的桌面表格,上面有一张图片作为背景,上面有各种标签。当我运行项目时,我有以下输出结果: 表单看起来很好地绘制了背景,但在大约 1/3 秒内我的标签是白色的,因为标签背景的颜色是白色,但它设置为透明。

我尝试将表单的可见性设置为 false 或将不透明度设置为 0%,并且仅在几秒钟后使其可见,结果相同,没有任何变化。

我也尝试使用双缓冲图形,但我的问题不是闪烁,然后也没有任何改变。

知道如何绕过这个吗?

【问题讨论】:

  • winforms?分享一些代码。
  • 在加载表单时还有什么其他情况(数据访问等)?
  • 这听起来像 WinForms,但更详细一点,可能问题的屏幕截图会有所帮助。另外,如果是 WinForms,要知道的一件事是“透明”并不是真正透明的。它只是采用容器的背景颜色。看看这篇文章:weblog.west-wind.com/posts/2008/Feb/07/…
  • 尝试将任何繁重的逻辑从表单加载事件处理程序移动到表单显示的事件处理程序。您可能希望在设计器中将标签可见属性设置为 false,并且仅在显示事件的表单上设置为 true
  • 是的,我在启动时有一些进程......但如果我在几秒钟后使表单可见,我也会得到相同的结果。我也尝试禁用它们,但没有结果。

标签: c# label flashing


【解决方案1】:

将任何繁重的逻辑从表单加载事件处理程序移至表单显示的事件处理程序。 您可能还希望在设计器中将标签可见属性设置为 false,并仅在表单显示事件上将它们设置回 true。

【讨论】:

  • 你是解决方案,但是当我尝试没有表单事件应该更正绘图时.. 使标签可见并没有按预期工作.. 我用一个简单的计时器使所有标签可见(由表单加载事件),延迟约 100 毫秒..
  • 再次编辑:为了获得最佳结果,还将表单不透明度设置为 0%,并在控件可见和 application.doevents() 调用之后使用计时器将其再次设置为 100。跨度>
猜你喜欢
  • 2012-02-05
  • 2015-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
相关资源
最近更新 更多