最简单的方法来创建一个返回值的自定义对话框?

我想为我的C#项目创建一个自定义对话框。我想在这个自定义对话框中有一个DataGridView,并且还会有一个按钮..当用户单击此按钮时,会向调用者返回一个整数值,然后对话框自行终止..

我怎样才能做到这一点?

C#中没有提示对话框。 您可以创建自定义提示框来执行此操作。

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"); 
  1. 在按钮上将DialogResult属性设置为DialogResult.OK
  2. 在对话框中,将AcceptButton属性设置为您的按钮
  3. 在名为Result of int type的表单中创建一个公共属性
  4. 在按钮的单击事件中设置此属性的值
  5. 以这种方式调用您的对话框

     using(myDialog dlg = new myDialog()) { if(dlg.ShowDialog() == DialogResult.OK) { int result = dlg.Result; // whatever you need to do with result } } 
 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; } 
 //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(); }