2012-03-05 10 views
16

मैं अपने सी # प्रोजेक्ट के लिए एक कस्टम डायलॉग बॉक्स बनाना चाहता हूं .. मैं इस कस्टम डायलॉग बॉक्स में डेटाग्रिड व्यू चाहता हूं, और एक बटन भी होगा .. जब उपयोगकर्ता इस बटन पर क्लिक करता है, तो एक पूर्णांक मान वापस कर दिया जाता है कॉलर, और संवाद बॉक्स तब स्वयं को समाप्त कर देता है ..एक कस्टम संवाद बॉक्स बनाने का सबसे आसान तरीका जो एक मूल्य देता है?

मैं इसे कैसे प्राप्त कर सकता हूं?

+1

कॉल रूपों – Bas

+2

मैं तुम्हें upvoted है वापस 0 पर मैं कुछ भी गलत नहीं दिखाई देता है सवाल। – Joel

उत्तर

28

सी # में कोई त्वरित संवाद बॉक्स नहीं है। इसके बजाय आप इसे करने के लिए एक कस्टम प्रॉम्प्ट बॉक्स बना सकते हैं।

public static class Prompt 
    { 
     public static int ShowDialog(string text, string caption) 
     { 
      Form prompt = new Form(); 
      prompt.Width = 500; 
      prompt.Height = 100; 
      prompt.Text = caption; 
      Label textLabel = new Label() { Left = 50, Top=20, Text=text }; 
      NumericUpDown inputBox = new NumericUpDown() { Left = 50, Top=50, Width=400 }; 
      Button confirmation = new Button() { Text = "Ok", Left=350, Width=100, Top=70 }; 
      confirmation.Click += (sender, e) => { prompt.Close(); }; 
      prompt.Controls.Add(confirmation); 
      prompt.Controls.Add(textLabel); 
      prompt.Controls.Add(inputBox); 
      prompt.ShowDialog(); 
      return (int)inputBox.Value; 
     } 
    } 

तब का उपयोग कर इसे कहते:

int promptValue = Prompt.ShowDialog("Test", "123"); 
+0

कोड ठीक दिखता है .. एकमात्र समस्या यह है कि int intValue = Prompt.ShowDialog ("test", "123") जैसे ही int मान वापस किया जाएगा; 'मुख्य फ़ंक्शन में कहा जाता है। यह वांछित नहीं है। जब मैं बटन दबाता हूं तो मैं संवाद वापस करने के लिए संवाद चाहता हूं। और फिर बटन भी फॉर्म बंद कर देता है .. – Ahmad

+5

@ अहमद ऐसा होता है। – Bas

15
  1. अपने बटन पर
  2. अपने संवाद पर अपने बटन को AcceptButton गुण सेट
  3. एक बनाएं DialogResult.OK को DialogResult गुण सेट आपके फॉर्म में सार्वजनिक संपत्ति int टाइप
  4. के परिणाम नामक इस प्रॉपर्टी का मूल्य सेट करें बटन
  5. @rcdmk इस खिड़कियां है अपने संवाद इस तरह से

    using(myDialog dlg = new myDialog()) 
    { 
        if(dlg.ShowDialog() == DialogResult.OK) 
        { 
         int result = dlg.Result; 
         // whatever you need to do with result 
        } 
    } 
    
-1
//combo box dialog c# 
// 
public static string DialogCombo(string text,DataTable comboSource,string DisplyMember,string ValueMember) 
    { 
     //comboSource = new DataTable(); 


     Form prompt = new Form(); 
     prompt.RightToLeft = RightToLeft.Yes; 
     prompt.Width = 500; 
     prompt.Height = 200; 
     Label textLabel = new Label() { Left = 350, Top = 20, Text = text }; 
     ComboBox combo = new ComboBox { Left = 50, Top = 50, Width = 400 }; 
     combo.DataSource = comboSource; 
     combo.ValueMember = ValueMember; 
     combo.DisplayMember = DisplyMember; 
     Button confirmation = new Button() { Text = "تایید", Left = 350, Width = 100, Top = 70 }; 
     confirmation.Click += (sender, e) => { prompt.Close(); }; 
     prompt.Controls.Add(confirmation); 
     prompt.Controls.Add(textLabel); 
     prompt.Controls.Add(combo); 
     prompt.ShowDialog(); 

     return combo.SelectedValue.ToString(); 
    } 
2
public static DialogResult InputBox(string title, string promptText, ref string value,bool isDigit=false) 
    { 
     Form form = new Form(); 
     Label label = new Label(); 
     TxtProNet textBox = new TxtProNet(); 

     if (isDigit == true) 
      textBox.TypeNumricOnly = true; 

     textBox.Width = 1000; 
     Button buttonOk = new Button(); 
     Button buttonCancel = new Button(); 

     form.Text = title; 
     label.Text = promptText; 
     textBox.Text = value; 

     buttonOk.Text = "OK"; 
     buttonCancel.Text = "Cancel"; 
     buttonOk.DialogResult = DialogResult.OK; 
     buttonCancel.DialogResult = DialogResult.Cancel; 

     label.SetBounds(9, 20, 372, 13); 
     textBox.SetBounds(12, 36, 372, 20); 
     buttonOk.SetBounds(228, 72, 75, 23); 
     buttonCancel.SetBounds(309, 72, 75, 23); 

     label.AutoSize = true; 
     textBox.Anchor = textBox.Anchor | AnchorStyles.Right; 
     buttonOk.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; 
     buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; 

     form.ClientSize = new Size(396, 107); 
     form.Controls.AddRange(new Control[] { label, textBox, buttonOk, buttonCancel }); 
     form.ClientSize = new Size(Math.Max(300, label.Right + 10), form.ClientSize.Height); 
     form.FormBorderStyle = FormBorderStyle.FixedDialog; 
     form.StartPosition = FormStartPosition.CenterScreen; 
     form.MinimizeBox = false; 
     form.MaximizeBox = false; 
     form.AcceptButton = buttonOk; 
     form.CancelButton = buttonCancel; 

     DialogResult dialogResult = form.ShowDialog(); 
     value = textBox.Text; 
     return dialogResult; 
    } 
+0

कृपया समझाओ, यह क्या है? – Lrrr

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