C# WinForm控件是透明的,不能正确显示

C# WinForm控件是透明的,不能正确显示,c#,winforms,C#,Winforms,加载表单时,我希望它显示一个加载图像(在图片框中)和一个带有一些文本的标准Windows标签。然而,我看到的都是白色的盒子,或者有时我看到下面有另一个形状。如何使图像和标签正确显示 我尝试在加载表单时将AllowTransparency设置为false,并将表单的透明度键设置为其他颜色,但没有任何效果 该项目是C#.netv3.5(也尝试了v4和v4.5) 有什么想法吗?首先,您不能显示图像,忙着等待,然后更改图像-这将永远不会重新绘制任何内容,从而导致您描述的症状。要“等待”,您需要将控件返回

加载表单时,我希望它显示一个加载图像(在图片框中)和一个带有一些文本的标准Windows标签。然而,我看到的都是白色的盒子,或者有时我看到下面有另一个形状。如何使图像和标签正确显示

我尝试在加载表单时将
AllowTransparency
设置为
false
,并将表单的透明度键设置为其他颜色,但没有任何效果

该项目是C#.netv3.5(也尝试了v4和v4.5)


有什么想法吗?

首先,您不能显示图像,忙着等待,然后更改图像-这将永远不会重新绘制任何内容,从而导致您描述的症状。要“等待”,您需要将控件返回到主应用程序循环,以便它可以继续处理消息(例如,处理窗口的重画请求)。一种方法是显示您的初始状态(启动屏幕),然后使用计时器稍后给您回电话,将显示更改为第二种状态

您面临的下一个问题是使用具有透明度的窗体控件。大多数控件将“透明”视为“用父控件颜色填充背景”,这不是您想要的。解决这一问题的一个简单方法是实现一个绘制处理程序,并为自己绘制图像和文本-这使您可以更好地控制显示器的外观,还可以让您获得更清晰的重画(没有闪烁或其他问题,是由显示器的构建引起的,而是由多个控件中的位引起的)


最后,考虑将您的Spulink屏幕显示作为一个单独的控件/窗体,在加载过程中显示在您的主窗体之上,这样就可以很容易地在主窗体上“覆盖”而不必更改它的设计。

< P>只需在<代码> FoMjjcTeNeNo.Sf()之后编写<代码> FabjjcTeNe.Rebug()/代码>。

GUI一次只能做一件事。当它“加载表单”时,它也不能保持GUI的更新。显式调用表单的Update()方法,使其至少完全绘制。通过在工作线程上运行昂贵的代码(如dbase查询)或使用async/await,我在表单中找不到更新方法。我已经快速查看了线程,但是从示例中我发现它不允许我从线程中修改表单标签。表单类有一个Update()方法。从控件类继承。最好让编译器来查找它,否则就不知道“我找不到”可能意味着什么。这是一个实例方法,以防万一。当我说我找不到它时,它不在窗体的属性窗口中,也不在Intellisense中。对于“它不起作用”的问题来说,这是绝对糟糕的一天。再次拔牙:你在智能感知下拉列表中看到了什么?更有效的是,您的代码实际上是什么样子的?请不要让我们猜测。透明度只是一个人工制品,获得透明度的一个好方法是不要绘制:)我不想改变图像-我希望它显示图像而不是白色框。如果我删除了图像,所以只有标签,它也不会显示!