2012-12-13 15 views
8

एक झटकेदार समस्या को हल करने के लिए, मैंने Winforms ऐप में WS_EX_COMPOSITED का उपयोग करने का सहारा लिया। यह पूरी तरह से काम करता है जब तक कि टैब नियंत्रण इतने सारे टैब प्राप्त नहीं करता है कि यह "स्क्रॉल तीर" बनाता है। इस बिंदु पर, मेरा पूरा एप्लिकेशन हर जगह shimmering और झिलमिलाहट के साथ लगातार अपने rerawing की तरह दिखता है।WS_EX_COMPOSITED पूरे ऐप को फ्लिकर/श्मिटर का कारण बनता है जब टैब नियंत्रण में बहुत सारे टैब होते हैं

यह देखने के लिए कि यह सिर्फ मेरा ऐप था, मैंने इसका परीक्षण करने के लिए एक सरल विनफॉर्म प्रोग्राम लिखा था। इसमें शामिल एक बटन के साथ एक टैब नियंत्रण है जो एक टैब जोड़ता है, और उसके फॉर्म में WS_EX_COMPOSITED सक्षम है ... और सुनिश्चित करें कि जब मैं ऐड बटन पर क्लिक करता हूं और स्क्रॉल तीर दिखाई देता है तो झटके लगते हैं।

मल्टीलाइन टैब नियंत्रण इसे ठीक करता है, लेकिन मेरे पास इसका उपयोग करने के लिए ऐप में कमरा नहीं है। कोड अपने परीक्षण अनुप्रयोग के लिए बहुत आसान है ... बस, एक टैब पेज एक एक बटन जोड़ा तो में प्रपत्र किया:

 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"); 
    } 

मैं Win7 चल रहा हूँ कि अगर मायने रखती है।

उत्तर

1

इस सवाल flicker free tab control with WS_EX_COMPOSITED

का जवाब पर एक नज़र डालें आस-पास काम करने के लिए एक सा लग सकता है, लेकिन यह मदद करनी चाहिए।