2009-09-15 14 views
6

सरल प्रश्न: मेरे पास WinForms बटन है, और मैं इसे दोनों (सशर्त रूप से) अदृश्य और अक्षम बनाना चाहता हूं (यह सुनिश्चित करने के लिए कि यदि कोई उस स्थान पर क्लिक करता है जहां अदृश्य बटन रहता है, तो यह इसे सक्रिय नहीं करेगा।) button.Visible = false भी button.Enabled = false का संकेत है, या मुझे उचित समय पर दोनों गुणों को सेट/रीसेट करने की आवश्यकता है?विनफॉर्म बटन: क्या दृश्यमान = झूठी लागू = झूठी है?

+1

मुझे पता है, कोई बेवकूफ/आलसी सवाल नहीं है, लेकिन गंभीरता से, आपने अभी कोशिश क्यों नहीं की? :/ –

+2

यदि आप इसे किसी भी तरह छुपाते हैं तो आपको बटन अक्षम करने की आवश्यकता क्यों है? बस अंतर्निहित कार्यक्षमता को अक्षम करें (कुछ ध्वज का परीक्षण करके, या फिर आप जानते हैं कि आपको बटन को अक्षम करना चाहिए)। इस तरह, भले ही कुछ बेवकूफ उपयोगकर्ता आपके बटन को फिर से दिखाने के लिए या अदृश्य, अभी तक सक्षम बटन पर कुछ विंडो संदेश भेजने के लिए टूल का उपयोग करते हैं, तो आपका एप्लिकेशन ऐसी चीजें नहीं करेगा जो इसे नहीं करना चाहिए। दूसरे शब्दों में, यदि आप कार्यक्षमता को अक्षम करना चाहते हैं, तो कार्यक्षमता को अक्षम करें और न केवल इसके सामने वाले दरवाजे पर। – OregonGhost

उत्तर

5

यदि नियंत्रण दिखाई नहीं देता है, तो यह प्रभावी रूप से अक्षम है। उस क्षेत्र में क्लिक करना जहां यह दिखाई देगा (या उस क्षेत्र के अंदर और बाहर रोलिंग) यह दृश्यमान होगा जिससे कोई घटना आग लग जाएगी।

संपादित करें: स्पष्ट करने के लिए, अन्य प्रतिक्रियाओं और टिप्पणियों के आधार पर, बटन नहीं विकलांग और अंतर्निहित घटना कार्यप्रणाली उपलब्ध प्रोग्राम के रूप में है, लेकिन बटन शारीरिक रूप से उपलब्ध/फार्म और उपयोगकर्ता पर नहीं दिखाई देंगे किसी भी तरह से इसके साथ बातचीत करने में सक्षम नहीं होंगे (जब तक आप प्रोग्रामर के रूप में, एक और विधि प्रोग्रामेटिक रूप से प्रदान नहीं करते)।

+0

बटन को सक्रिय करने के लिए माउस क्लिक (जैसे कीबोर्ड) के अलावा अन्य तरीके हैं। मैंने यह पूछने के लिए अपना प्रश्न पढ़ा कि क्या बटन को कम करने का कोई तरीका था, न कि यह माउस के माध्यम से बस पहुंचा जा सकता है। – recursive

+0

@recursive: जबकि आपका बिंदु मान्य है, मैं उम्मीद करता हूं कि नियंत्रण छिपाए जाने पर ध्यान केंद्रित करने की अपेक्षा करेगा, और यह फिर से ध्यान केंद्रित नहीं कर सकता है। हालांकि यह सच नहीं हो सकता है, और मुझे यकीन नहीं है कि निमोनिक्स के साथ क्या होता है। लेकिन फिर भी, माउस या कीबोर्ड के बिना बटन दबाए जाने के तरीके हैं। यूआई स्वचालन दिमाग में आता है। – OregonGhost

1

गलत करने के लिए दृश्यमान सेट करना सक्षम संपत्ति को बदलें। हालांकि, संपत्ति को झूठी में सेट करने से नियंत्रण प्रभावी ढंग से वहां नहीं होता है। यदि आप किसी अदृश्य बटन द्वारा छोड़े खाली स्थान पर क्लिक करते हैं, तो बटन का क्लिक ईवेंट आग नहीं लगेगा।

+0

धन्यवाद, जोएल। यह मूल रूप से मुझे चाहिए था। मुझे बस यह सुनिश्चित करने की ज़रूरत है कि उपयोगकर्ता उस पर क्लिक नहीं कर पाएगा। –

1

मुझे नहीं लगता कि इसका मतलब है कि यह अक्षम है। इसका मतलब है कि नियंत्रण फॉर्म पर दिखाई नहीं दे रहा है इसलिए इस पर कार्रवाई करने का कोई तरीका नहीं है। यदि आप दृश्यमान संपत्ति को झूठी पर सेट करते हैं और फिर कोड के माध्यम से क्लिक ईवेंट को लागू करते हैं तो यह प्रक्रिया करेगा। हालांकि, अगर आप सक्षम संपत्ति को गलत पर सेट करते हैं तो मुझे लगता है कि यह

1

बहुत निश्चित है कि। दृश्य = गलत, '_Click' कार्रवाई अक्षम है। उदाहरण के लिए, यदि आप अपने कोड में .PerformClick(), और .दृश्य = सत्य, _Click निष्पादित करेगा। यदि गलत है, तो _Click निष्पादित नहीं होगा।

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