用户控件没有被绘制c#
Posted
技术标签:
【中文标题】用户控件没有被绘制c#【英文标题】:User control not getting painted c# 【发布时间】:2018-10-19 04:37:02 【问题描述】:我有一个应用程序,我可以在其中从 1 个用户控件移动到多个用户控件。当我转向许多控件时,我遇到了闪烁的问题。 为了解决闪烁问题,我通过 -
启用了 双缓冲protected override CreateParams CreateParams
get
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
return cp;
确实解决了闪烁的问题。但是引入了一个新问题,有时我的用户控件没有完全绘制。出现一个黑色窗口。为了解决这个问题,我需要最小化和最大化软件,它才能正常显示。
我认为,虽然双缓冲正在绘制所有用户 一次控制,一个或多个用户控件仍在生成其 控制。而在大师绘画的时候,这种控制并不是 准备好了。
这是获得正确想法的图像-
如图所示,在此特定场景中,有一个表单包含 4 个用户控件。每个用户控件进一步包含其他控件/用户控件。
这个问题可能出了什么问题?
【问题讨论】:
你试过在ResizeEnd
事件中调用Invalidate()
吗?
@Sandeep 不,没有帮助。
遇到了类似的问题,但用户控件不太复杂。通过在ResizeEvent
中调用Invalidate()
来处理主窗口移动,此问题已得到解决。并通过在MouseUp
事件中调用Invalidate
来进行用户控制移动。
【参考方案1】:
我通过将表单设计中的 TrasnsparencyKey
从黑色更改为另一种颜色而不是黑色来解决此问题,尝试一种您不使用的颜色。
【讨论】:
以上是关于用户控件没有被绘制c#的主要内容,如果未能解决你的问题,请参考以下文章