क्या कोई इस तथ्य के लिए एक अच्छा स्पष्टीकरण के बारे में सोच सकता है कि एक संवाद के परिणाम डब्ल्यूपीएफ में एक बेकार बूल है? यह हमेशा मुझे परेशान करता है। WinForms में यह एक enum प्रकार था और यह मेरे लिए बहुत अधिक समझ में आया।डब्ल्यूपीएफ में डायलॉग रेसल्ट एक नालीबल बूल क्यों है?
उत्तर
मेरी राय में यह इसलिए किया गया क्योंकि ज्यादातर मामलों में आपको सामान्यीकृत विकल्प जैसे रीट्री या अनदेखा की आवश्यकता नहीं है।
यदि आपको ठीक/रद्द से अधिक की आवश्यकता है, तो आपको किसी प्रकार के कार्य संवाद का उपयोग करना होगा, उदा। लिखित उत्तर के साथ। इस तरह, आप कुछ दशकों पहले सोचा कुछ एनम मूल्यों तक सीमित नहीं हैं, और डायलॉग रिसेट मूल उपयोग के लिए सिर्फ सकारात्मक/नकारात्मक है और आप अपनी खुद की संपत्ति को लागू कर सकते हैं जो आपकी उन्नत आवश्यकताओं के लिए विशिष्ट है। इसलिए केवल सत्य/झूठी की आवश्यकता है, और शून्य यह इंगित करता है कि विंडो अभी तक बंद नहीं हुई है (अभी तक संपत्ति को कोई मूल्य असाइन नहीं किया गया है)।
यदि आपके पास एक ऐसा संवाद है जो केवल एक प्रश्न से अधिक है तो उपयोगकर्ता को जवाब देना चाहिए (उदा।एक प्रवेश प्रपत्र), आप आमतौर पर ठीक/रद्द के साथ बेहतर होते हैं, इसलिए आपको अधिक मूल्यों की आवश्यकता नहीं होती है।
the MSDN documentation के अनुसार:
DialogResult अशक्त जब संवाद बॉक्स दिखाया गया है लेकिन न तो स्वीकार कर लिया है और न ही रद्द किया जाता है।
लेकिन मुझे यकीन नहीं है कि यह तब तक कैसे हो सकता है जब तक आप संवाद तक पहुंचने वाले एकाधिक धागे से निपट नहीं रहे।
- PressesALT + F4: जब निम्न चीजों में से एक हो
प्रलेखन कहते हैं गलत है।
- बंद करें बटन पर क्लिक करता है।
- सिस्टम मेनू से बंद का चयन करता है।
मुझे लगता है कि यह तब होता है जब उपयोगकर्ता विंडो के ऊपरी दाएं भाग पर बंद बटन पर क्लिक करता है। –
मेरे द्वारा लिंक किए गए दस्तावेज के अनुसार नहीं ... मैं अधिक जानकारी के साथ संपादित करूंगा –
@ मैक्स, अगर आप 'शो' कहते हैं तो कॉल आपको वापस लौटाता है (यानी यह एक गैर-अवरुद्ध कॉल है), तो आप 'DialogResult' मूल्य सीधे पूछताछ करने के लिए स्वतंत्र। यह केवल तभी होता है जब आप 'शोडियलॉग' कहते हैं कि जब तक संवाद को खारिज नहीं किया जाता है तब तक कॉल ब्लॉक। हालांकि बाद के मामले में, आप अभी भी किसी अन्य धागे से ऑब्जेक्ट से पूछताछ करने के लिए स्वतंत्र हैं, जैसा कि आप इंगित करते हैं। –
DialogResult
संपत्ति Window
वर्ग पर परिभाषित किया गया है। सभी Window
एस संवाद नहीं हैं। इसलिए, संपत्ति सभी खिड़कियों के लिए प्रासंगिक नहीं है। Window
के बजाय Show()
के माध्यम से दिखाया गया है (संभवतः, जब तक कि आप इसे किसी कारण से सेट नहीं करते) DialogResult = null
है।
Window1.xaml:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<StackPanel>
<Button Name="b1">Show</Button>
<Button Name="b2">ShowDialog</Button>
</StackPanel>
</Window>
Window1.xaml.cs:
यहाँ प्रदर्शित करने के लिए एक सरल उदाहरण है
using System.Windows;
namespace WpfApplication1
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
b1.Click += new RoutedEventHandler(b1_Click);
b2.Click += new RoutedEventHandler(b2_Click);
}
void b1_Click(object sender, RoutedEventArgs e)
{
var w = new Window();
w.Closed += delegate
{
MessageBox.Show("" + w.DialogResult);
};
w.Show();
}
void b2_Click(object sender, RoutedEventArgs e)
{
var w = new Window();
w.ShowDialog();
MessageBox.Show("" + w.DialogResult);
}
}
}
आप विंडो बंद करते हैं, तो आप 'ध्यान दें कि संवाद में DialogResult
false
है, जबकि गैर-संवाद में null DialogResult
है।
हालांकि यह सच है और शायद प्रासंगिक है, डायलॉग रिसेट एनम में पहले से ही 'कोई नहीं' मूल्य था जो इस उदाहरण में काफी आसानी से शून्य का उद्देश्य पूरा कर लेगा। इसलिए मुझे संदेह है कि स्थापित मॉडल से आगे बढ़ने के लिए एक शून्य मूल्य पर्याप्त कारण था। –
मेरे लिए, शून्य का अर्थ पूरी तरह से अप्रासंगिक है जबकि कोई भी सुझाव नहीं देता है कि यह प्रासंगिक है लेकिन अभी तक सेट नहीं है। * shrugs * अर्थशास्त्र। –
काफी हद तक मैं इसे दूसरी तरफ पढ़ूंगा। नल एक अनसेट मान है और कोई भी मतलब नहीं है कि कोई संवादप्रवाह नहीं होगा और कभी नहीं होगा। हो सकता है कि उस प्रकार का भ्रम मॉडल बदलने के लिए पर्याप्त कारण था। –
शोडियलॉग हमेशा सत्य या गलत वापस आ जाएगा। जब संवाद खुला होता है तो DialogResult केवल शून्य स्थिति ले जाएगा। शून्य से सच्चे या गलत में संक्रमण से संवाद बंद हो जाएगा और शोडियलॉग रिटर्न पर मूल कॉल किया जाएगा।
आईएमओ ऐसा इसलिए है क्योंकि DialogResult हमेशा उपयोग नहीं किया जाता है। आप देखते हैं, अगर आप विंडो को अपनी शोडिअलॉग() विधि से कॉल करते हैं, तो आप केवल डायलॉग रेसल्ट सेट कर सकते हैं, अगर आप इसे अपनी शो() विधि से कॉल करते हैं, और डायलॉग रेसल्ट को किसी भी चीज़ पर सेट करने का प्रयास करते हैं, तो यह एक अवैध ऑप्शन अपवाद फेंक देगा। तो मुझे लगता है कि यह कारण है कि यह शून्य है, अगर आप शो() विधि के साथ विंडो को कॉल करते हैं, तो यह शून्य होगा, अगर आप इसे ShowDialog() का उपयोग करके कॉल करते हैं, तो यह आपके ऊपर है।
हम्म यह उत्तर पहले से ही केंट बूगार्ट द्वारा बताया गया था, दोबारा पोस्ट करने के लिए खेद है! – Carlo
- 1. एक बूल एक हस्ताक्षरित चार क्यों है?
- 2. डब्ल्यूपीएफ में मोडल डायलॉग कैसे करें?
- 3. संदेशबॉक्स रेसल्ट बनाम DialogResult
- 4. है (बूल | बूल) सुरक्षित?
- 5. क्यों बूलियन और बूल
- 6. नालीबल (बूलियन) की तुलना
- 7. एक डायलॉग
- 8. एक नालीबल <DateTime> नियंत्रण संपत्ति
- 9. नालीबल संरचना बनाम वर्ग
- 10. जेनिक्स और नालीबल प्रकार
- 11. एक सी ++ बूल var डिफ़ॉल्ट रूप से क्यों सच है?
- 12. डायलॉग
- 13. डब्ल्यूपीएफ सीमा नियंत्रण में एक mousedoubleclick घटना क्यों नहीं है?
- 14. डब्ल्यूपीएफ में सब कुछ धुंधला क्यों है?
- 15. डायलॉग फ्रैगमेंट डायलॉग
- 16. डायलॉग
- 17. डायलॉग
- 18. डायलॉग
- 19. बूल
- 20. यदि बूल int के लिए एक मैक्रो है, तो यह एक अलग आकार क्यों है?
- 21. उद्देश्य-सी: बूल बनाम बूल
- 22. प्राथमिकता में डायलॉग फ्रैगमेंट
- 23. सी ++ में एक ही आकार और बूल समान आकार क्यों है?
- 24. सी ++ में पॉइंटर्स से बूल तक एक अंतर्निहित प्रकार रूपांतरण क्यों है?
- 25. क्यों उपयोग करें !! int को बूल में परिवर्तित करते समय?
- 26. उद्देश्य-सी शब्दकोश एक बूल
- 27. डब्ल्यूपीएफ डाटाबेसिंग अपवाद निगल क्यों करता है?
- 28. एक उद्धृत स्ट्रिंग एक std :: स्ट्रिंग से पहले बूल विधि हस्ताक्षर क्यों मेल खाता है?
- 29. "बूल" और "बूल" के बीच क्या अंतर है?
- 30. क्यों मैं पायथन में बूल का विस्तार नहीं कर सकता?
फिर क्यों न्यूलबल (बूलियन का), क्यों न केवल बूलियन, या थ्रीस्टेट? – Shimmy
बूल? मेरी राय में, yaetr से संभालना आसान है (अभी तक याद रखने के लिए एक और enum)। और शून्य मान निश्चित रूप से सही/गलत मानों के विपरीत, बिना किसी असाइन किए गए मान के रूप में बाइंडिंग के लिए उपयोगी हो सकता है। बेशक, * मुझे नहीं पता * यह ऐसा क्यों है, बस अनुमान लगा रहा है :) – OregonGhost