我正在尝试在隐藏时更改表单外观。然后让它可见。
private void HideLabelAndShowForm()
{
label1.Hide();
Invalidate(true);
Update();
// thinking we now have no label on the form?
Show();
// no! the label is still visible!
// and gets hidden after a moment
}
为什么只在显示上一个内容(带有可见标签)之后才重新绘制表单?任何解决方法?
更新
答案 0 :(得分:0)
尝试使用Application.DoEvents
,但be careful:
private void HideLabelAndShowForm() {
label1.Hide();
Application.DoEvents();
Show();
}
答案 1 :(得分:0)
如果您关注的是旧内容的闪烁,请尝试启用双缓存。
将此行放在表单的构造函数中:
this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true);
答案 2 :(得分:0)
隐藏表单时不会引发表单的Paint事件。在你再次Show()它之前它不会绘画。通常它应该是如此之快以至于你看不到它。我认为你只是看到了Windows的延迟。您的机器可能不足以进行桌面组合。
其他想法:
要尝试的事情:
答案 3 :(得分:0)
myForm.Opacity = 0.0F;
myForm.Show();
myForm.Opacity = 1.0F;