2012-12-13 4 views
8

Um ein flackerndes Problem zu beheben, habe ich in einer Winforms-App WS_EX_COMPOSITED verwendet. Dies funktioniert perfekt, bis ein Tab-Steuerelement so viele Tabs erhält, dass es die "Scroll-Pfeile" erzeugt. An diesem Punkt sieht meine gesamte Anwendung aus, als ob sie ständig neu gezeichnet wird und überall flimmert und flackert.WS_EX_COMPOSITED bewirkt, dass die gesamte App flimmert/schimmert, wenn die Registerkartensteuerung zu viele Registerkarten enthält

Um zu sehen, ob es nur meine App war, schrieb ich ein einfaches winforms-Programm, um es zu testen. Alles, was es enthält, ist ein Tab-Steuerelement mit einer Schaltfläche, die eine Registerkarte hinzufügt, und die Form ist auf WS_EX_COMPOSITED aktiviert ... Und tatsächlich, flackert passiert, wenn ich auf die Schaltfläche Hinzufügen und die Bildlaufpfeile klicken.

Mehrzeilige Registerkarte Steuerelement behebt dies, aber ich habe keinen Platz in der App, um das zu verwenden. Der Code ist wirklich einfach für meinen Test-App ... einfach eine Registerkarte eines eine Schaltfläche hinzugefügt, dann in der Form hat:

 protected override CreateParams CreateParams 
    { 
     get 
     { 
      CreateParams cp = base.CreateParams; 
      cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED 
      return cp; 
     } 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     this.tabControl1.TabPages.Add("SomeTab"); 
    } 

ich win7 renne wenn es ankommt.

Antwort

Verwandte Themen