2009-02-03 8 views
34

'सत्य' वापस करने के लिए मुझे System.Windows.ShowDialog() कैसे मिल सकता है?मैं सिस्टम को कैसे प्राप्त करूं। Windows.ShowDialog() 'सत्य' वापस करने के लिए?

मैं इसके लिए थोड़ा नया हूं। System.Windows.ShowDialog का रिटर्न टाइप bool है? जब आप Cancel पर हिट करते हैं तो Submit और false पर true वापस आना चाहिए। लेकिन मुझे यकीन नहीं है कि Button आधिकारिक सबमिट बटन कौन सा नामित करना है।

संपादित करें: संबंधित नोट पर, मैं उत्सुक हूं कि यह कैसे शून्य हो सकता है।

उत्तर

36

http://msdn.microsoft.com/en-us/library/system.windows.window.showdialog.aspx

ShowDialog रिटर्न एक Nullable < ( के < (टी>)>) बूलियन मान कि कि क्या गतिविधि स्वीकार कर लिया गया या रद्द निर्दिष्ट करता है। खिड़की बंद होने से पहले वापसी मूल्य डायलॉग रीसेट प्रॉपर्टी का मान है ( DialogResult देखें)।

असल में, आप डायलॉग रेसल्ट का मूल्य निर्धारित करके तय करते हैं कि एक विशेष बटन मारकर नहीं - आप तय करते हैं कि बटन क्या करता है।

+0

माफ़ी माफ करना अगर यह अनावश्यक या बहुत स्पष्ट है, लेकिन आपको बूल सेट करना चाहिए? संवाद के अंदर बंद() विधि को कॉल करने से पहले DialogResult मान। ऐसा करने में विफलता के परिणामस्वरूप अपवाद के साथ एक अवैधऑपरेशन अपवाद फेंक दिया जाएगा। संदेश संपत्ति को सेट किया जा रहा है "डायलॉग रेसल्ट केवल विंडो के निर्माण के बाद सेट किया जा सकता है और संवाद के रूप में दिखाया जा सकता है।" – ClockEndGooner

+0

अगर मुझे यह गलत लगता है, तो मुझे मुझे क्षमा करना होगा, क्योंकि मैंने WinForms के बाद से सालों से किया है, लेकिन मुझे लगता है कि, हाँ, आप DialogResult _ सेट करेंगे (उदाहरण के लिए, बटन के ऑनक्लिक हैंडलर के अंदर, लेकिन यह कोई भी तंत्र हो सकता है जिसे आप सपना देखते हैं) _, और फिर बंद करें() – JMD

14

डब्ल्यूपीएफ में, Button.IsDefault संपत्ति को यह सुनिश्चित करने के लिए सत्य सेट करें कि एक बटन विंडो के लिए "सबमिट" बटन है। मुझे 100% यकीन नहीं है कि यह विंडो को एक संवाद के संवाद के साथ बंद कर देगा। ऐसा नहीं होता है, तो आप सिर्फ thusly अपने घटना क्लिक संभाल करने की जरूरत है:

this.DialogResult = true; 

संपादित

इसी तरह, आप Button.IsCancel संपत्ति एक बटन बनाने की उपयोग कर सकते हैं एक के लिए बटन "अभी नहीं" प्रपत्र।

संपादित 2

मेरा मानना ​​है कि कारण ShowDialog व्यर्थ है कि चूंकि यह अशक्त है जब तक प्रपत्र प्रस्तुत या रद्द कर दिया है, तो आप यदि आप एक पृष्ठभूमि सूत्र में संवाद देख रहे थे कि के लिए परीक्षण कर सकता है। मैंने कोशिश नहीं की है, लेकिन यह एक तार्किक कारण की तरह लगता है कि वे संपत्ति के लिए एक तीसरा "अज्ञात" (शून्य) राज्य पेश करेंगे।

+4

नहीं, IsDefault को सत्य पर सेट करने से कोई बटन संवाद को बंद करने के लिए क्लिक नहीं करेगा, हालांकि, IsCancel होगा। DialogResult को सेट करना संवाद बंद कर देगा। सेटिंग है सत्य के लिए डिफ़ॉल्ट कमांड को ट्रिगर करने का कारण बनता है यदि उपयोगकर्ता एंटर कुंजी दबाता है। –

6

यदि आप डायलॉग रेसल्ट को सही शोडियलॉग पर सेट करते हैं तो सत्य लौटाता है, यदि आप डायलॉग रेसल्ट को झूठी शोडियलॉग सेट करते हैं तो डायलॉग रीसेट (उपयोगकर्ता शीर्ष दाएं कोने में लाल एक्स पर क्लिक करता है) के बिना बंद हो जाता है। ShowDialog शून्य वापस आ जाएगा।

आईएसडीफॉल्ट को सत्य पर सेट करना बटन को थोड़ा अलग दिखने और एंटर दबाकर इस बटन को "क्लिक" करेगा।

यदि आप IsCancel को सत्य पर सेट करते हैं तो दबाए गए एएससी इस बटन को "क्लिक" करेंगे।

+0

एक्स पर क्लिक करते समय, शोडियलॉग झूठी वापसी करेगा, शून्य नहीं। मुझे विश्वास है कि अगर यह कुछ गलत हो गया है, तो यह केवल शून्य हो जाता है। –

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

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