2013-06-30 6 views
12

मैं MessageBox बनाना चाहता हूं जिसमें हां/नहीं बटन और एक चेकबॉक्स है।एक चेकबॉक्स के साथ एक संदेश बॉक्स कैसे दिखाएं?

एप्लिकेशन एक तस्वीर पुनर्विक्रेता है और यह एक बार में कई चित्रों का पुन: आकार बदल जाएगा; प्रक्रिया में यह जांच करेगा कि क्या नया स्थान फ़ाइल नाम इसे ओवरराइट करने के विकल्प के साथ मौजूद है या नहीं।

MessageBox जबकि स्थित चेकबॉक्स पर क्लिक हाँएक्स समय की संख्या होने अगर वे हर फ़ाइल अधिलेखित करना चाहते हैं नहीं कर पाएगा, कोई भी नई फ़ाइलें अगर वांछित ओवरराइट करने का विकल्प उपयोगकर्ता दे देंगे।

मैं MessageBox संवाद में एक चेकबॉक्स कैसे जोड़ूं?

+5

एक कस्टम संवाद बनाएं। –

+0

हाँ, मैं सहमत हूं। कस्टम संवाद जाने का रास्ता है। यहां भी देखें: http://social.msdn.microsoft.com/Forums/vstudio/en-US/2fa7e3e3-f55f-4c0d-bcf5-c7278af1d730/how-to-display-a-checkbox-in-message-box – rsbarro

उत्तर

14

आप messageBox के एक चेकबॉक्स नहीं जोड़ सकते हैं यहाँ कुछ है कि आप यह अनुमान लगा सकता है। जैसे ही टिम और आरएसबरो सुझाव देते हैं, आपको एक कस्टम संवाद बनाना चाहिए। टिम का जवाब अच्छी तरह से काम करेगा, और एक नई कक्षा के निर्माण की आवश्यकता नहीं है। यदि आप डिज़ाइनर में फॉर्म को डिज़ाइन करना चाहते हैं, तो आप इसे आजमा सकते हैं।

  • दो बटन और चेकबॉक्स के साथ एक नया फॉर्म बनाएं जो आपको चाहिए।
  • रूपों डिजाइनर में, हाँ करने के लिए हाँ बटन के DialogResult गुण सेट, और यह तुम क्या बटन उपयोगकर्ता क्लिक किया की खोज दूँगा सं करने के लिए कोई बटन की है कि।
  • फॉर्म पर एक संपत्ति बनाएं जो चेकबॉक्स की स्थिति को प्रतिबिंबित करती है (वैकल्पिक - मैं किसी अन्य रूप से एक फॉर्म पर नियंत्रण का संदर्भ नहीं देना चाहता, लेकिन यदि आप चेकबॉक्स सार्वजनिक करते हैं, तो यह भी काम करेगा)।
public bool DoForAll 
{ 
    get { return checkBox.Checked; } 
} 
  • आपका मुख्य रूप पर, जब जरूरत बच्चे रूप को दिखाने के। उदाहरण के लिए:
var options = new Options(); 
var result = options.ShowDialog(); 
if (result == DialogResult.Yes) 
{ 
    var doForAll = options.DoForAll; 
} 
+0

उत्तर के लिए धन्यवाद! यह आपके और टिम के जवाब के बीच एक कठिन विकल्प था, लेकिन आपका डिज़ाइन करने के लिए थोड़ा आसान दृश्य बन गया। – TK421

+0

अभी तक का सबसे अच्छा समाधान! –

16

एक कस्टम संवाद बनाएँ।

public static class CheckboxDialog 
{ 
    public static bool ShowDialog(string text, string caption) 
    { 
     Form prompt = new Form(); 
     prompt.Width = 180; 
     prompt.Height = 100; 
     prompt.Text = caption; 
     FlowLayoutPanel panel = new FlowLayoutPanel(); 
     CheckBox chk = new CheckBox(); 
     chk.Text = text; 
     Button ok = new Button() { Text = "Yes" }; 
     ok.Click += (sender, e) => { prompt.Close(); }; 
     Button no = new Button() { Text = "No" }; 
     no.Click += (sender, e) => { prompt.Close(); }; 
     panel.Controls.Add(chk); 
     panel.SetFlowBreak(chk, true); 
     panel.Controls.Add(ok); 
     panel.Controls.Add(no); 
     prompt.Controls.Add(panel); 
     prompt.ShowDialog(); 
     return chk.Checked; 
    } 
} 

आप इसे इस तरह से उपयोग कर सकते हैं:

bool overwrite = CheckboxDialog.ShowDialog("overwrite", "Overwrite location?"); 
+0

क्या होगा यदि हमारे पास एकाधिक चेकबॉक्स हैं? chk1, chk2, chk3 कहें और जांच किए गए चेकबॉक्स के मान वापस करना चाहते हैं, हमारे पास एक समय में 2 चेकबॉक्स हो सकते हैं और दोनों मान वापस कर सकते हैं। और फिर हम इसका उपयोग कैसे करेंगे? @Tim –

+0

@silent_programmer उदाहरण के रूप में टिम का उत्तर उपयोग करें, और कोड में अधिक चेकबॉक्स जोड़ें। –

0

यह प्रयास करें MsgBoxCheck वर्ग का उपयोग विंडोज MessageBox का उपयोग कर के रूप में सरल है। सबसे पहले, अपने सी # प्रोजेक्ट में MsgBoxCheck.dll का संदर्भ जोड़ें। अधिकांश लोग निम्नानुसार कक्षा का आह्वान करेंगे:

MsgBoxCheck.MessageBox dlg = new MsgBoxCheck.MessageBox(); 
DialogResult dr = 
     dlg.Show(@"Software\PricklySoft\TestMsgBoxCheck", 
     "DontShowAgain",DialogResult.OK, 
     "Don't ask me this again", 
     "Now is the time for all good men to check this message box", 
     "Hello", 
     MessageBoxButtons.OK, MessageBoxIcon.Information); 
संबंधित मुद्दे