从最小化状态恢复时,Form
花费了无尽的时间来重新绘制。
Form
是无边界的。我要覆盖 WndProc 和 CreateParms 。
我正在将无边界Form
从最小状态恢复到正常状态。
我正在覆盖 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);
}
}
答案 0 :(得分:1)
我遇到了和您一样的问题,并且解决了表单设计中TrasnsparencyKey从黑色更改为另一种颜色而不是黑色的问题,请尝试不使用的一种颜色。