我设计了一个单选按钮自定义控件。它在我的计算机上工作正常,但是当我将应用程序移植到另一台没有出现的机器上时。
任何人都知道为什么?
这是我控制的一部分:
public class CustomCheckBox:UserControl
{
public CustomCheckBox()
{
// Height+=50;
count++;
index = count;
Height = 50;
Width = 100;
Region r = new Region(new Rectangle( 0, 0, Width, Height));
this.Region = r;
this.SetStyle(ControlStyles.ResizeRedraw, true);
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
// cp.Style &= ~0x02000000;
return cp;
}
}
protected override void OnMouseLeave(EventArgs e)
{
paintState = 0;
base.OnMouseLeave(e);
this.Invalidate();
}
...
答案 0 :(得分:0)
问题解决了Hans Passant上面评论过,我删除了WS_EX_COMPOSITED样式标志,该标志用于应用绘图优化以消除外观上的闪烁,而我在构造函数中使用了这种优化,并且它工作正常。 / p>
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.CacheText, true);
this.SetStyle(ControlStyles.ContainerControl, false);
this.SetStyle(ControlStyles.ResizeRedraw, false);
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
this.SetStyle(ControlStyles.FixedHeight, true);
this.SetStyle(ControlStyles.FixedWidth, true);