जनरल समस्याSplitContainer पैनल आकार मुद्दा
आवेदन सी # WinForms नेट 4.0 है।
मेरे पास SplitContainer
है जो अधिकांश रूप लेता है, यह सभी दिशाओं में एंकर पर सेट होता है, इसलिए यह फ़ॉर्म के साथ फिर से आकार देता है। बाएं पैनल (पैनल 1) में एक साधारण मेनू है, यहां कोई समस्या नहीं है। दायां पैनल (पैनल 2) अधिक जटिल है और इसमें कई घोंसले वाले टैब नियंत्रण हैं (बहुत सारे नियंत्रण के साथ) - यह दर्दनाक जटिल है, लेकिन यह नहीं बदल रहा है।
समस्या यह है कि फ़ॉर्म का पुन: आकार इतना अच्छा काम नहीं करता है। वास्तव में, यदि आप धीरे-धीरे किनारों को खींचकर आकार बदलते हैं तो यह ठीक काम करता है, लेकिन जल्दी से खींचें या "पुनर्स्थापित करें" बटन (फॉर्म के शीर्ष-दाएं) का उपयोग करें, फिर समस्या उत्पन्न होती है।
मेरे नियंत्रण पदानुक्रम
निम्नलिखित मेरे नियंत्रण पदानुक्रम, इसके निश्चित रूप से एक में कटौती संस्करण का एक सरल उदाहरण है, लेकिन नेस्टेड टैब नियंत्रण जो प्रतिकृति के साथ मदद मिल सकती है पर प्रकाश डाला है:
- फॉर्म
- विभाजन कंटेनर (एंकर: ऊपर, बाएं, नीचे, दाएं)
- अनुसूचित जाति Panel1 (न्यूनतम चौड़ाई: 300)
- TreeViewControl (भूल जाते हैं कि यह क्या कहा जाता है)
- अनुसूचित जाति Panel2
- पैनल (लंगर: ऊपर, छोड़ दिया, नीचे, दाएं)
- टैब कंट्रोल (एंकर: टॉप, बाएं, नीचे, दाएं)
- टैब नियंत्रण w/स्क्रीन पर बहने वाले बहुत सारे पृष्ठ और नेविगेशन बटन को दिखाने के लिए आवश्यक है पी दाएँ कोने (लंगर: ऊपर, छोड़ दिया, नीचे, दाएं)
- टैब कंट्रोल (एंकर: टॉप, बाएं, नीचे, दाएं)
- पैनल (लंगर: ऊपर, छोड़ दिया, नीचे, दाएं)
- अनुसूचित जाति Panel1 (न्यूनतम चौड़ाई: 300)
- विभाजन कंटेनर (एंकर: ऊपर, बाएं, नीचे, दाएं)
डीबग विवरण
कुछ डिबगिंग के बाद यह ऐसा लगता है कि यह वास्तव मेंहै(विभाजित कंटेनर का एक बच्चा) जो ठीक से आकार बदलता नहीं है, और वास्तविक SplitContainer
स्वयं ठीक का आकार बदलता है।
यहाँ आकार बदलने से पहले, डिबग मूल्यों है कि इस दिखाने ...
पूर्ण चौड़ाई रूप होते हैं:
splitContainerMain.Width: 1479
splitContainerMain.Panel2.Width: 1206
panelCenter.Width: 1203
tabControlMain.Width: 1215
की उम्मीद सभी के रूप में, splitContainerMain.Panel2.Width
splitContainerMain.Width
से छोटा है।
आकार बदलने के बाद जहां भी समस्या:
splitContainerMain.Width: 815
splitContainerMain.Panel2.Width: 1206
panelCenter.Width: 1203
tabControlMain.Width: 1215
के रूप में देखा जा सकता है, splitContainerMain.Width
के रूप में वांछित आकार दिया गया है, लेकिन splitContainerMain.Panel2.Width
और बाद में अपने बच्चों को नहीं है।
नोट: कृपया याद रखें, अगर मैं मैन्युअल रूप से धीरे-धीरे फॉर्म का आकार बदलता हूं तो चौड़ाई अपडेट सही है - यह मेरे साथ कोई समस्या नहीं है जो सही ढंग से किसी एंकर को सेट नहीं कर रहा है।
मेरे प्रयास अब तक
मैं अगर इस मुद्दे को related to this problem here है सोच रहा हूँ, लेकिन मैं एक नया "MySplitContainer" कोशिश करते हैं और इस समस्या को हल करने के लिए बनाने के लिए तैयार नहीं हूँ।
जो मैंने करने की कोशिश की है वह विभिन्न फॉर्म आकार बदलने की घटनाओं का उपयोग करती है और चौड़ाई को मैन्युअल रूप से सेट करने का प्रयास करती है, लेकिन इसका कोई फायदा नहीं होता है। मुझे लगता है कि मैं कोशिश करना चाहता हूं कि Panel2.Width
मूल्य को किसी प्रकार की घटना के भीतर से सेट करना है।
व्हाट आई
- खोज रहे हैं रहा हूँ वहाँ वैसे भी सही ढंग से आकार बदलने के लिए जब
splitContainerMain
आकार परिवर्तनsplitContainerMain.Panel2.Width
मजबूर करने के लिए? - वैकल्पिक रूप से, मैं गणना कैसे कर सकता हूं कि
Panel2.Width
क्या होना चाहिए? और मैंForm.Resize
ईवेंट से उस मान को कैसे सेट कर सकता हूं? (या कोई अन्य घटना?)
मैं एक साथ परीक्षण करने के लिए एक फार्म डालने की कोशिश की है, लेकिन जैसा कि आपने वर्णन किया है, मैंने अभी तक खराब व्यवहार नहीं देखा है। यदि आप कुछ और लेआउट विवरण प्रदान कर सकते हैं, तो इससे मदद मिलेगी। लेकिन अन्यथा, मुझे आपके परिणामों को पुन: पेश करने में बहुत भाग्य नहीं है। – DonBoitnott
@ डॉनबॉटनॉट: मैंने अपने लेआउट के बारे में कुछ विवरण जोड़े हैं, मुझे पता है कि यह दोहराना आसान नहीं होगा लेकिन शायद यह कुछ करेगा। मैं देखूंगा कि क्या मैं एक नए Winforms ऐप में भी दोहराना कर सकता हूं – musefan
'पैनल केंद्र' क्या है? और आप कैसे आकार बदल रहे हैं ... कोड में? ... बस फॉर्म एज खींच रहा है? – DonBoitnott