2012-02-10 10 views
8

यहां दो प्रश्न, आशा है कि यह ठीक है।संदेशबॉक्स रेसल्ट बनाम DialogResult

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

private void exitToolStrip_Click(object sender, EventArgs e) 
{ 
    DialogResult mBoxResult = MessageBox.Show("Would you like to exit the program?", "Exit Program", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 
    switch (mBoxResult) 
    { 
     case DialogResult.Yes: 
      this.Close(); 
      break; 
     case DialogResult.No: 
      break; 
    } 
} 

MSDN के अनुसार, मैं MessageBoxResult mBoxResult बल्कि DialogResult mBoxResult से उपयोग करना चाहिए: मेरे कोड इस प्रकार है।

मैं .NET Framework 3.5 का उपयोग कर रहा हूं। मैंने here पढ़ा है कि pre-3.0DialogResult का उपयोग करना चाहिए, लेकिन यदि मैं 3.5 का उपयोग कर रहा हूं, तो MessageBoxResult काम नहीं करना चाहिए?

जब मैं इसे कहते हैं की कोशिश, मैं

प्रकार या नाम स्थान नाम MessageBoxResult नहीं पाया जा सका ( आप एक का उपयोग कर के निर्देश या एक विधानसभा संदर्भ याद आ रही हैं?)।

हालांकि, जब मैं DialogResult का उपयोग करता हूं तो यह ठीक काम करता है। ऐसा क्यों है?

case DialogResult.No: 
break; 

अगर किसी संवाद पर Cancel बटन दबाता है तो यह ब्रेक के अलावा वहाँ में कुछ भी डाल करने के लिए उचित होगा:

मेरे दूसरे प्रश्न कोड के इस टुकड़े के बारे में है? या सबकुछ इसके बिना ठीक काम करेगा?

+0

बस डायलॉग रीसेट का उपयोग करें और सुनिश्चित करें कि आप प्रत्येक बटन का परिणाम प्रकार सेट करें ताकि यह ठीक से कैप्चर/लौटाया जा सके .. चेक करने के लिए बहुत आसान बात – MethodMan

उत्तर

10

DialogResult WinForms के लिए है। SilverBightResult SilverLight के लिए है।

बस break कथन No मामले के लिए ठीक है। लेकिन एक स्विच स्टेटमेंट का उपयोग यहां ओवरकिल है। if (response == yes) Close(); पर्याप्त होगा।

ध्यान दें कि यह वही करने का आदर्श तरीका नहीं है जो आप चाहते हैं। क्या होगा यदि उपयोगकर्ता विंडो सीमा पर बंद बटन पर क्लिक करता है, या ALT + F4 दबाता है? इसके बजाय, आप FormClosing घटना संभाल चाहिए:

private void MyForm_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if (MessageBox.Show("Would you like to exit the program?", "Exit Program", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) 
     e.Cancel = true; 
} 

true को e.Cancel सेट करके, आप प्रपत्र को बंद करने रद्द कर दें। कुछ भी नहीं करके, आप फ़ॉर्म को बंद करने की अनुमति देते हैं।

7
  • उपयोग DialogResult यदि आपके आवेदन करता है, तो आपके आवेदन आप देख सकते हैं, नामस्थान अलग हैं एक WPF/Silverlight आवेदन

है एक WinForms आवेदन

  • उपयोग MessageBoxResult है: बनाम System.WindowsSystem.Windows.Forms (Winforms) (WPF)।

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