在其他计算机上运行应用程序时不显示自定义控件

时间:2012-03-03 12:33:19

标签: c# .net user-controls custom-controls

我设计了一个单选按钮自定义控件。它在我的计算机上工作正常,但是当我将应用程序移植到另一台没有出现的机器上时。

任何人都知道为什么?

这是我控制的一部分:

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();
    }
  ...

1 个答案:

答案 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);