2010-12-05 35 views
5

सी # एप्लिकेशन में एक रजिस्टर फॉर्म भरना और मैंने पैनल के साथ देखा कि अगर मैं ऑटोस्क्रॉल सक्षम करता हूं और उसके बाद स्क्रॉल के नीचे एक टेक्स्टबॉक्स होता है और उस पर क्लिक करता है तो यह शीर्ष पर वापस जाने के लिए सभी तरह से कूदता है। क्या कुछ कोड के साथ इसे ठीक करने का कोई तरीका है या यह एक स्वामित्व है?टेक्स्ट बॉक्स में क्लिक करने से ऑटोस्क्रॉल पैनल शीर्ष पर वापस स्क्रॉल करने का कारण बनता है?

शब्दों में इसे समझाने के लिए मेरे लिए थोड़ा मुश्किल है, इसलिए यहां a short video है जो व्यवहार दिखाता है।

+0

कृपया अधिक विवरण दें – SLaks

+0

मैं इस व्यवहार को पुन: पेश नहीं कर सकते।। अधिक जानकारी कृपया – Poma

+0

"स्क्रॉल के नीचे एक टेक्स्टबॉक्स क्या है और उस पर क्लिक करें" मतलब? – Gabe

उत्तर

1

स्पष्ट रूप से किसी ने भी इस व्यवहार को पहले नहीं देखा है और एक त्वरित उत्तर प्रदान कर सकता है, मैंने विज़ुअल स्टूडियो को आपके द्वारा वर्णित करने की कोशिश करने और पुन: पेश करने के लिए खोला।

मैंने GroupBox के साथ एक नया WinForms प्रोजेक्ट बनाया है जिसमें Panel है जिसका AutoScroll संपत्ति "True" पर सेट है। फिर, मैंने दो नए GroupBoxकोPanel के अंदर जोड़ा, प्रत्येक में दो TextBox नियंत्रण शामिल हैं। पहला एम्बेडेड GroupBox फॉर्म के शीर्ष पर है, स्टार्टअप पर पूरी तरह से दिखाई देता है; दूसरा एम्बेडेड GroupBox नीचे है जहां इसे देखने के लिए स्क्रॉल किया जाना चाहिए। यह उस डिज़ाइन/लेआउट के समतुल्य है जो आपके पास आपके वर्णन और वीडियो से सबसे अच्छा है।

हालांकि, जब मैं परियोजना चलाने के लिए, नीचे दूसरी GroupBox एम्बेडेड तक स्क्रॉल करें और TextBox नियंत्रण इसमें मौजूद से एक का चयन, यह करता है बिल्कुल के रूप में की उम्मीदTextBox जिस पर मैंने क्लिक किया था, उस पर ध्यान केंद्रित किया गया, बिना पूरे पैनल को शीर्ष पर स्क्रॉल कर रहा है। मैं जो देख रहा हूं उसे पुन: पेश नहीं कर सकता। यदि आप या तो मुझे बता सकते हैं कि मैंने अपने परीक्षण नमूने को डिजाइन करने में गलत क्या किया है या आप जिस व्यवहार का अनुभव कर रहे हैं उसे फिर से बनाने के लिए आवश्यक सबसे छोटी नमूना परियोजना पोस्ट कर सकते हैं, तो मैं मदद कर सकता हूं।

अन्यथा, यहाँ चीजों में से कुछ सुझावों की जांच के लिए कर रहे हैं:

  1. अपने फार्म पर वस्तुओं के टैब क्रम। यह वास्तव में वर्णित व्यवहार का कारण नहीं बनना चाहिए क्योंकि नियंत्रण पर पर क्लिक करना उस नियंत्रण पर ध्यान केंद्रित करना चाहिए, टैब ऑर्डर में इसकी स्थिति के बावजूद, और मेरे नमूना प्रोजेक्ट में टैब ऑर्डर को कई बार झुकाव करना अभी भी ' टी एक ही प्रभाव प्रतीत होता है। लेकिन मुझे लगता है कि वैसे भी कोशिश करने लायक है। डिज़ाइन मोड में, अपने "व्यू" मेनू पर जाएं, और "टैब ऑर्डर" पर क्लिक करें। आपके द्वारा टैब ऑर्डर सेट करने वाले सभी नियंत्रणों के पास उनके शीर्ष बाएं कोने में एक छोटा रंग का बॉक्स होगा, जो प्रत्येक कंटेनर में उनके टैब ऑर्डर को इंगित करता है। टैब ऑर्डर सेट करने के लिए, प्राकृतिक ऑर्डर में प्रत्येक नियंत्रण पर एक बार क्लिक करें, जिसे आप केंद्रित करना चाहते हैं।

  2. किसी भी <Control>.Focus या <Control.Select> कथन के लिए अपना कोड स्कोर करें। सुनिश्चित करें कि आपके पास कोई सत्यापन कोड नहीं है जो रन-टाइम के दौरान किसी भी तरह से टैब ऑर्डर को बदल रहा है। यह आपके Panel के शीर्ष के पास स्थित एक नियंत्रण पर वापस कूदने के लिए फोकस कर सकता है, जिससे इसे नए स्थान पर स्वत: स्क्रॉल करने के लिए मजबूर किया जा सकता है।

  3. एक ब्रांड नई, स्वच्छ परियोजना में व्यवहार को पुन: पेश करने का प्रयास करें। आदर्श रूप से, विजुअल स्टूडियो में एक नई परियोजना बनाएं और सटीक पर नियंत्रण रखें, वैसे ही आपके पास उन परियोजनाओं में है जिनके साथ आपको कठिनाइयों का सामना करना पड़ रहा है।यह वही काम है जो मैंने किया था, आंशिक रूप से क्योंकि मेरे पास आपकी विशेष परियोजना के साथ काम करने की ज़रूरत नहीं है, और यह भी क्योंकि यह विशेष रूप से मुश्किल व्यवहार की समस्या निवारण का सबसे अच्छा तरीका है। यह अधिक संभावना है कि आपके डिज़ाइन या स्रोत कोड में कुछ कर्कश है जो इस व्यवहार को स्वयं नियंत्रण में किसी प्रकार की बग के बजाए कर रहा है। लेकिन किसी भी तरह से, यह आपको बिल्कुल पता चलेगा जहां समस्या आ रही है, जो आपको समाधान के बहुत करीब ले जाएगी।

+1

मैंने वास्तव में इसे समझ लिया, मैं ऑटोस्क्रॉल अधिकतम मान 1000 पर सेट कर रहा था इसलिए मैं सामान जोड़ सकता था लेकिन एक बार सब कुछ जोड़ा गया था, मैंने मूल्य हटा दिया और फिर यह ठीक काम करना शुरू कर दिया। मुझे लगता है कि बस एक अजीब गड़बड़ है। – Sean

+0

मुझे एक ही समस्या है लेकिन मेरे मामले में स्क्रॉल केवल तभी नीचे चला जाता है जब फ़ॉर्म पहली बार लोड हो जाता है। क्या कोई तरीका है कि मैं इसे कोड का उपयोग करके बैक अप ले सकता हूं। –

1

मुझे यह सही समस्या थी। मुझे फॉर्म पर अपने पैनलों से डॉकिंग को हटाना पड़ा और इससे समस्या ठीक हुई।

13

मुझे एक ही समस्या है। मैं अपने कक्ष में इस कोड के साथ यह तय हो:

protected override Point ScrollToControl(Control activeControl) 
{ 
    return this.AutoScrollPosition; 
} 
+3

इससे मेरी मदद मिली है! धन्यवाद। मेरा सुझाव है कि इसे उत्तर –

+0

के रूप में चिह्नित किया जाना चाहिए, यह मेरे लिए एक मुद्दा हल किया गया था जहां मैं एक प्रकार के स्टॉपवॉच के रूप में लेबल को प्रोग्रामेटिक रूप से बदल रहा था, और कंटेनर प्रत्येक पेंट पर जो भी नियंत्रण केंद्रित था, उस पर स्क्रॉल कर रहा था। यह इसे ठीक करता है ताकि स्क्रॉल बार रहता है जहां उपयोगकर्ता ने इसे छोड़ा था। धन्यवाद =) – frax

0

आप पैनल "" के बदले "TableLayoutPanel उपयोग कर सकते हैं स्क्रॉलबार अपनी स्थिति को बदल से बचने के लिए

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