2009-02-12 16 views
14

कोड मान लिया जाये: उपयोगकर्ता प्रेस भागने.NET: कैसे बचें एक संदेश बॉक्स बंद करें। दिखाएं()?

MessageBox.Show(this, 
     "Would you like the differential girdle spring on the up-end of the grammeters?", 
     "Smi-Boloid Stater Slots", 
     MessageBoxButtons.YesNo, 
     MessageBoxIcon.Warning); 

alt text http://i41.tinypic.com/rayots.jpg

हैं, तो मैं इसे संदेश बॉक्स को बंद करना चाहते हैं, और Show() विधि DialogResult.None लौट सकते हैं।

संबंधित प्रश्न: मैं संदेशबॉक्स के ऊपरी दाएं भाग में "एक्स" कैसे सक्षम कर सकता हूं। उपयोगकर्ता को निरस्त करने दें?


जैसे कि विंडोज एक्सप्लोरर पुष्टिकरण संवाद आपको निरस्त करने के लिए भागने देता है।

इस तरह की तरह कि एक इंटरनेट एक्सप्लोरर पुष्टिकरण संवाद आपको निरस्त करने के लिए भागने की अनुमति देता है।

इस तरह की तरह कि एक आउटलुक पुष्टिकरण संवाद आपको निरस्त करने के लिए भागने की अनुमति देता है।

"मुझे कोई सांसारिक विचार है कि तुम क्या कर रहे हैं मुझसे पूछे है: की तरह कैसे ब्रह्मांड के इतिहास में हर संवाद उपयोगकर्ता प्रेस भागने X क्लिक करें, क्रम में कहने के लिए कर सकते हैं या के

तरह , कृपया मेरे कंप्यूटर को तोड़ें मत। "


From the Vista UX Guidelines

उपयोग हाँ और कोई बटन केवल हाँ या ना सवाल का जवाब करने के लिए। मुख्य निर्देश स्वाभाविक रूप से होना चाहिए या कोई प्रश्न नहीं है। कभी भी ठीक न करें या हाँ या नहीं प्रश्नों के लिए रद्द करें।

उत्तर

3

मेरा मानना ​​है कि नहीं यह संभव है, हालांकि ठेठ बराबर रद्द करें (आपके मामले में विशेष रूप से YesNoCancel)साथ MessageBoxButtons झंडे में से एक को निर्दिष्ट किया जाता है।

यदि आप वास्तव में चाहते हैं, तो यह इस सुविधा के साथ अपने संदेशबॉक्स फ़ंक्शन को फिर से बनाने के लिए काफी सरल होना चाहिए, हालांकि वास्तव में रद्द करें नौकरी करता है।

+0

"संभव नहीं" –

12

आप enum मान "MessageBoxButtons.YesNoCancel"

साथ "रद्द करें" विकल्प यह DialogResult.Cancel

+0

या MessageBoxButtons.OKCancel – Powerlord

+0

रद्द करने के अलावा प्रश्न के वैध जवाब नहीं है "क्या आप वाकई चाहते हैं ..." –

+0

... और भागने "हाँ या नहीं?" का वैध उत्तर नहीं है –

1

मुझे लगता है वापस आ जाएगी सक्षम करने के लिए है कि अगर आप MessageBoxButtons.YesNoCancel, डिफ़ॉल्ट रूप से शामिल एस्केप को रद्द करने के लिए वायर्ड किया गया है जो रद्द करने का संदेशबॉक्स रीसेट करेगा।

+0

यदि उपयोगकर्ता "नहीं" छंद "रद्द करें" हिट करता है तो इसका क्या अर्थ है? –

+0

इस मामले में अनिवार्य रूप से वही बात नहीं है और रद्द करें। YesNoCancel ऐसी चीजों के लिए उपयुक्त है जैसे "क्या आप हैलोवर्ल्ड बंद करने से पहले अपने दस्तावेज़ में परिवर्तनों को सहेजना चाहते हैं?" हाँ: कृपया बचाओ। नहीं: बिना सहेजे बंद करें। रद्द करें: बंद न करें या सहेजें, बस वापस जाएं। – JMD

+1

लेकिन दोनों अनिवार्य रूप से एक ही काम करते हैं, यही कारण है कि हम एक भागने का विकल्प चाहते हैं !! मुझे पता नहीं क्यों माइक्रोसॉफ्ट इसे याद करता है! और अब भी अगर कोई और अलग-अलग चीजों को रद्द नहीं करता है, तो मैं सिर्फ हाँनो संवाद से क्यों नहीं बच सकता! मैंने इस समस्या से निपटने के लिए अपने आप में से एक को घुमाया .. – nawfal

1

अन्य उत्तरों के आगे यह संभवतः खराब अभ्यास है कि उपयोगकर्ता को "रद्द करें" बटन दिखाए जाने तक संवाद को बंद करने की अनुमति देने के लिए संभवतः खराब व्यवहार है क्योंकि यह डिफ़ॉल्ट व्यवहार से भिन्न होता है जो उपयोगकर्ता विंडोज अनुप्रयोगों से अपेक्षा करते हैं और वे अनिश्चित हो सकते हैं बचने की कुंजी दबाकर उन्होंने किस कार्रवाई को लिया।

जैसा कि पहले से ही एक "रद्द करें" बटन जोड़ने का उल्लेख किया गया है वांछित प्रभाव स्वचालित रूप से बना देगा।

+0

एस्केप का मतलब है, "ओह बकवास, मुझे ऐसा करने का मतलब नहीं था, दिखाओ कि मैंने जो भी किया वह मैंने नहीं किया जो इस चीज़ को प्रकट करता है।" –

1

मुझे लगता है कि MessageBox (WinForms और WPF दोनों में से एक) उन घटकों में से एक है जो सर्वोत्तम रूप से परिभाषित किए गए हैं। इसका व्यवहार इतना कठोर है कि किसी भी तरह का रिफैक्टरिंग असंभव के बगल में है। संक्षेप में, अपना खुद का रोल करें - इस तरह आप इसे बंद कर सकते हैं, और कुछ और जो आपको चाहिए हो।

कोडप्लेक्स पर एक प्रोजेक्ट है जिसे InfoBox कहा जाता है जो आपके लिए उपयोग किया जा सकता है।

1

यह संदेशबॉक्स बॉक्सबॉट्स की तरह लगता है। ओक कैंसल जो आप खोज रहे हैं, आप इस तथ्य पर लटका चुके हैं कि प्रश्न ठीक/रद्द नहीं होता है।

आप सिद्धांत रूप में अपना खुद का संदेशबॉक्स फॉर्म लिख सकते हैं जो एक ही चीज़ और सहयोगी एस्केप कुंजी के साथ नहीं करता है, जो कुछ अतिरिक्त काम के साथ आप जो चाहते हैं उसे पूरा करेंगे।

MessageBox.Show(this, "The following operation will format your computer.\r\nPress Ok to continue, Cancel to abort", "Confirm Format", MessageBoxButtons.OkCancel, MessageBoxIcon.Warning); 

बस एक उदाहरण है, लेकिन ऐसा लगता है अपने दुविधा करने का सबसे सरल उपाय है:

एक अन्य विकल्प उदाहरण के लिए, आपके सवाल का अलग तरीके से व्यक्त करने के लिए है।

+1

उपयोगिता बनाम उपयोग की आसानी के लिए स्वीकृत। हममम –

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