从最小化状态恢复时,Form
需要无休止的时间重新绘制Form
是无边界的。我正在覆盖WndProc和CreateParms
我正在将无边界Form
从最小化状态恢复到正常状态
I正在重写CreateParms方法以删除阴影并停止闪烁
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
m_aeroEnabled = CheckAeroEnabled();
if (!m_aeroEnabled)
cp.ClassStyle |= CS_DROPSHADOW;
cp.Style |= WS_MINIMIZEBOX;
cp.ExStyle |= 0x02000000; //WS_EX_COMPOSITED
cp.ClassStyle |= CS_DBLCLKS;
return cp;
}
}
删除cp.ExStyle|=0x02000000时问题消失,但随后出现闪烁问题。
编辑:添加似乎导致问题的自定义控件的代码:
public partial class BorderPanel : Panel
{
public BorderPanel()
{
}
protected override void OnPaint(PaintEventArgs pe)
{
ControlPaint.DrawBorder(pe.Graphics, this.ClientRectangle,
BorderColor, borderSize.Left, ButtonBorderStyle.Solid,
BorderColor, borderSize.Top, ButtonBorderStyle.Solid,
BorderColor, borderSize.Right, ButtonBorderStyle.Solid,
BorderColor, borderSize.Bottom, ButtonBorderStyle.Solid);
base.OnPaint(pe);
}
}
我和你一样也遇到了同样的问题,我解决了这个问题。将表单设计中的TrasnsparencyKey从黑色更改为另一种颜色,但不是黑色,尝试一种你没有使用的颜色。