22

C# プロジェクト用のカスタム ダイアログ ボックスを作成したいと考えています。このカスタム ダイアログ ボックスに DataGridView を配置したいのですが、ボタンも表示されます。ユーザーがこのボタンをクリックすると、呼び出し元に整数値が返され、ダイアログ ボックスが終了します。

どうすればこれを達成できますか?

4

5 に答える 5

22
  1. ボタンで、DialogResultプロパティをDialogResult.OKに設定します
  2. ダイアログで、AcceptButtonプロパティをボタンに設定します
  3. 結果のint型と呼ばれるフォームにパブリックプロパティを作成します
  4. ボタンのクリックイベントでこのプロパティの値を設定します
  5. この方法でダイアログを呼び出します

    using(myDialog dlg = new myDialog())
    {
        if(dlg.ShowDialog() == DialogResult.OK)
        {
            int result = dlg.Result;
            // whatever you need to do with result
        }
    }
    
于 2012-03-05T15:59:10.953 に答える
3
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;
}
于 2015-02-14T09:49:37.900 に答える
-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();
    }
于 2015-02-14T09:46:15.290 に答える