2011-09-14 12 views
5

पर चयन को अक्षम करने के लिए कैसे करें मैं टेक्स्ट बॉक्स में पाठ का चयन करने और टेक्स्ट के बीच में क्लिक करना अक्षम करना चाहता हूं, लेकिन उपयोगकर्ता इस टेक्स्टबॉक्स में प्रवेश करने और पहले के पाठ के अंत में लिखने में सक्षम होना चाहिए, इसलिए मैं नहीं कर सकता इसे ReadOnly या Enable = false बनाएं।टेक्स्टबॉक्स

मैं MouseDown संभालने के लिए और निम्न कार्य करने का प्रयास करें:

input.Select(input.Text.Length, 0); 

यह पाठ के बीच में एक कर्सर रखकर साथ में मदद करता है, लेकिन उपयोगकर्ता अभी भी अंत से चयन कर सकते हैं।

मैं पर MouseDown ईवेंट पर भी बना देता हूं, लेकिन इस मामले में उपयोगकर्ता टेक्स्टबॉक्स पर क्लिक नहीं कर सकता और कुछ भी लिख सकता है।

अंतिम प्रयास एक अन्य नियंत्रण में focus() सेट करना था और समय के बाद वापस ध्यान केंद्रित करना था, लेकिन यह बिल्कुल काम नहीं करता था। उपयोगकर्ता अभी भी एक चयन कर सकते हैं।

मैं यह कैसे कर सकता हूं?

+2

एक दूसरा टेक्स्टबॉक्स जो केवल पहले टेक्स्टबॉक्स में जोड़ता है? – LarsTech

उत्तर

2

यदि यह यूआई/उपयोगकर्ता मॉडल फिट बैठता है, तो दूसरा दृष्टिकोण दो टेक्स्ट बॉक्स का उपयोग करना है: पिछले पाठ के साथ केवल पढ़ने वाला एक जिसे उपयोगकर्ता देख और कार्य कर सकता है (यदि वह ऐसा कुछ है जो उसे करने की ज़रूरत है) और नए टेक्स्ट को रीड-ओनली टेक्स्ट बॉक्स (और दृढ़ता परत) में नया टेक्स्ट करने के लिए बटन के साथ नए पाठ के लिए एक संपादन योग्य।

दृष्टिकोण है कि न केवल यकीनन अधिक उपयोगकर्ता के अनुकूल — संपादन योग्य बॉक्स बल्कि सिर्फ "appendable" की तुलना में पूरी तरह से संपादन योग्य है, जो भ्रामक हो जाता है जब उपयोगकर्ता बैकस्पेस हिट — लेकिन यह भी ढांचे के साथ कम से लड़ने बक्से कर बनाने के लिए की आवश्यकता है जिसकी आपको जरूरत है।

5

यह कैसे Click घटना के लिए

संपादित करें के बारे में: यह भी एक ही DoubleClick और MouseLeave के लिए सभी मामलों को कवर करने के है। आप एक आम घटना हैंडलर हो सकता है।

private void textBox1_Click(object sender, EventArgs e) 
    { 
     ((TextBox) sender).SelectionLength = 0; 
    } 
+0

लगभग। जब 'माउसअप' चयन गायब हो जाता है, लेकिन फिर भी उपयोगकर्ता कुछ (नीली हाइलाइटिंग) चुनना शुरू कर सकता है – Pieniadz

+1

चयन को साफ़ करने वाले ईवेंट की सूची में 'माउसमोव' जोड़ें जो –

1

आप अपने MouseDown ईवेंट हैंडलर के साथ बंद अब तक नहीं कर रहे हैं, लेकिन शायद बेहतर MouseUp को पकड़ने के लिए, के रूप में यह घटना है कि जब वे चयन समाप्त कर दिया है आग जाएगा।

वैकल्पिक रूप से, आप चयन परिवर्तन घटना को पकड़ सकते हैं।

input.Select (input.Text.Length, 0);:

बस अपने डाल

किसी भी ईवेंट हैंडलर में कोड।

+2

Winforms 'TextBox' के लिए कोई 'चयन चेंज' नहीं है। –

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