Sunday 15 June 2014

c# - Emulating ShowDialog functionality -


मैं एक आवेदन (c # + wpf) लिख रहा हूँ जहां सभी मोडल शैली संवाद को UserControl मुख्य विंडो को कवर करने वाले पारभासी ग्रिड के शीर्ष पर। इसका मतलब है कि केवल एक विंडो है और यह सभी फर्म अनुप्रयोगों का लग रहा है और महसूस करता है।

एक संदेशबॉक्स दिखाने के लिए, वाक्यविन्यास के रूप में है निम्नलिखित:

  CustomMessageBox b = नया कस्टम मैसेजबॉक्स ("हैलो वर्ल्ड"); C.DialogClosed + = () = & gt; {// शेष फ़ंक्शन} // यह मुख्य विंडो देखने के मॉडल के लिए सुन लिया गया एक ईवेंट उठाता है, // संदेश बॉक्स को प्रदर्शित करता है और बाकी प्रोग्राम को बाहर कर दिया जाता है base.ShowMessageBox (ख);  

जैसा कि आप देख सकते हैं, न केवल निष्पादन का प्रवाह वास्तव में उलटा है, लेकिन क्लासिक। NET संस्करण की तुलना में इसकी बहुत ही सीखी बात है:

  MessageBox दिखाएँ ("हैलो दुनिया"); // बाकी फ़ंक्शन  

जो मैं वास्तव में देख रहा हूं वह base.ShowMessageBox से वापस नहीं जाने का एक तरीका है, जब तक कि संवाद बंद होने की घटना को बढ़ा नहीं दिया गया है यह, लेकिन मैं नहीं देख सकता कि यह कैसे जीयूआई धागा फांसी के बिना इंतजार करना संभव है और इस प्रकार उपयोगकर्ता को कभी भी ठीक पर क्लिक करने से रोकता है। मुझे पता है कि मैं ShowMessageBox फ़ंक्शन के लिए एक पैरामीटर के रूप में एक प्रतिनिधि कार्य ले सकता हूं, जो कि निष्पादन के व्युत्क्रम को रोकता है, लेकिन फिर भी कुछ पागल सिंटैक्स / इंडेंटिंग का कारण बनता है।

क्या मैं कुछ स्पष्ट लापता या वहाँ ऐसा करने के लिए एक मानक तरीका है?

आप कोडप्रोजेक्ट पर लेख और एमएसडीएन पर आलेख पर एक नज़र डाल सकते हैं। पहला लेख आपको मैन्युअल रूप से अवरुद्ध मोडल संवाद बनाकर चलता है, और दूसरा लेख दिखाता है कि कैसे कस्टम संवाद बनाने के लिए।


No comments:

Post a Comment