Je veux créer une boîte de dialogue personnalisée pour mon projet C # .. Je veux avoir un DataGridView dans cette boîte de dialogue personnalisée, et il y aura également un bouton .. Lorsque l'utilisateur clique sur ce bouton, une valeur entière est renvoyée à l'appelant , et la boîte de dialogue se ferme ensuite.
Comment puis-je atteindre cet objectif ?
Il n'y a pas de boîte de dialogue d'invite en C #. Vous pouvez créer une boîte d'invite personnalisée pour ce faire à la place.
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;
}
}
Appelez-le ensuite en utilisant:
int promptValue = Prompt.ShowDialog("Test", "123");
Appelez votre dialogue de cette façon
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;
}