Easiest way to create a custom dialog box which returns a value?
There is no prompt dialog box in C#. You can create a custom prompt box to do this instead.
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;
}
}
Then call it using:
int promptValue = Prompt.ShowDialog("Test", "123");
- On your button set the DialogResult property to DialogResult.OK
- On your dialog set the AcceptButton property to your button
- Create a public property in your form called Result of int type
- Set the value of this property in the click event of your button
Call your dialog in this way
using(myDialog dlg = new myDialog()) { if(dlg.ShowDialog() == DialogResult.OK) { int result = dlg.Result; // whatever you need to do with result } }