2013-05-05 5 views
5

मेरे पास एक ऐसा फॉर्म है जिसे मैं ShowDialog का उपयोग कर ला रहा हूं जिसमें कुछ टेक्स्ट बॉक्स, लेबल और बटन शामिल हैं। मेरी समस्या यह है कि पाठ बॉक्स स्वयं फॉर्म से पहले खींचे जा रहे हैं और अन्य नियंत्रण तैयार किए गए हैं।एक ही समय में खींचे जाने वाले नियंत्रण

मैं OnPaint विधि मुझे यकीन है कि इस समस्या का कारण हो सकता है, तो नहीं कर रहा हूँ अधिभावी कर रहा हूँ:

protected override void OnPaint(PaintEventArgs e) 
{ 
    ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle, Color.Black, ButtonBorderStyle.Solid); 
    base.OnPaint(e); 
} 

यह केवल कुछ विलंब हो सकता है लेकिन यह दिखाई और कष्टप्रद है। धन्यवाद।

फॉर्म डबल तरीके से buffered है।

संपादित करें: मैंने इस तथ्य को इस तथ्य को स्पष्ट किया है कि फ़ॉर्म में FormBorderStyle नहीं है। FormBorderStyleSizable पर सेट के साथ, यह समस्या नहीं होती है। हालांकि कृपया ध्यान दें कि FormBorderStyle.None होने के कारण मेरी सीमा शैली आवश्यक है, इसलिए मुझे अभी तक कोई समाधान नहीं मिला है।

+1

आप सभी प्रासंगिक कोड लेबल, बक्सें और बटन के ड्राइंग से संबंधित पोस्ट कर सकते हैं? – JosephGarrone

+0

वास्तव में, मूल तत्व स्वयं को प्रस्तुत करने से पहले प्रत्येक बच्चे के नियंत्रण की रेंडर विधि को कॉल करता है। यह पहले गलत व्यवहार है। फ़ॉर्म लोड पूरा होने के बाद आप संवाद दिखा सकते हैं। – Saravanan

+0

सभी स्टूडियो विजुअल स्टूडियो डिजाइनर के माध्यम से जोड़े गए हैं इसलिए मैंने इन नियंत्रणों के चित्र को स्पर्श नहीं किया। –

उत्तर

1

संवाद बॉक्स प्रपत्र को यह जोड़ने का प्रयास करें:

protected override CreateParams CreateParams 
    { 
     get 
     { 
      // Activate double buffering at the form level. All child controls will be double buffered as well. 

      CreateParams cp = base.CreateParams; 

      cp.ExStyle |= 0x02000000; // WS_EX_COMPOSITED 

      return cp; 
     } 
    } 
+0

यह काम किया धन्यवाद !! –

संबंधित मुद्दे