Пользовательский элемент управления не отображается при запуске приложения на другом компьютере - PullRequest
0 голосов
/ 03 марта 2012

Я разработал пользовательский элемент управления переключателем.он отлично работает на моем компьютере, но когда я портирую свое приложение на другую машину, которая не появляется.

любое тело знает почему?

вот часть моего контроля:

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 голосов
/ 04 марта 2012

Проблема, решенная как Ганс Пассант , прокомментировал выше, я удалил флаг стиля WS_EX_COMPOSITED, который использовался для применения оптимизации рисования для удаления мерцания при появлении, и вместо этого я использовал этот вид оптимизации в конструкторе, и это сработало хорошо.

      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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...