2
public int dialog()
{
    Form prompt = new Form(); // creates form

    //dimensions
    prompt.Width = 300;
    prompt.Height = 125;

    prompt.Text = "Adding Rows"; // title

    Label amountLabel = new Label() { Left = 75, Top = 0, Text = "Enter a number" }; // label for prompt
    amountLabel.Font = new Font("Microsoft Sans Serif", 9.75F);
    TextBox value = new TextBox() { Left = 50, Top = 25, Width = prompt.Width / 2 }; // text box for prompt
    //value.Focus();
    Button confirmation = new Button() { Text = "Ok", Left = prompt.Width / 2 - 50, Width = 50, Top = 50 }; // ok button
    confirmation.Click += (sender, e) => { prompt.Close(); }; // if clicked it will close

    prompt.AcceptButton = confirmation;

    // adding the controls
    prompt.Controls.Add(value);
    prompt.Controls.Add(confirmation);
    prompt.Controls.Add(amountLabel);
    prompt.ShowDialog();

    int num;
    Int32.TryParse(value.Text, out num);
    return num;
}

これが私のプロンプトであり、閉じることができるようにボタンを作成したいと思います。これは以前に尋ねられたことを知っていますが、それは彼らがデフォルトのフォームを使用しているためです.

これは私CancelButtonのものであり、それが何をするかです。

prompt.CancelButton = this.Close(); // not working

ただし、別のクラスは使用していません。同じクラスを使用しています。ボタンが閉じている場合にボタンを閉じるための 1 つの呼び出しメソッド/プロパティ (プロパティ セクションで視覚的に編集せずに) は何ですか?

4

2 に答える 2

3

キャンセル ボタンを配置せずに、モデル フォームのエスケープ ボタンを押してフォームを閉じる別の方法を次に示します。

prompt.KeyPreview = true;
prompt.KeyDown += (sender, e) => 
{ 
    if (e.KeyCode == Keys.Escape) prompt.DialogResult = DialogResult.Cancel; // you can also call prompt.Close() here
};
于 2014-01-19T22:56:39.767 に答える
2

キャンセルによるクローズと確認によるクローズを区別する必要がある場合は、2 つの別個のボタンが必要です。

Button cancellation = new Button() 
{ Text = "Cancel", Left = prompt.Width / 2 + 10, Width = 50, Top = 50 }; 

prompt.CancelButton = cancellation;
cancellation.DialogResult = DialogResult.Cancel;

また、確認ボタンには DialogResult プロパティの設定が必要です

confirmation.DialogResult = DialogResult.OK;

ShowDialog の結果を取得できます

if(DialogResult.OK == prompt.ShowDialog())
{
    int num;
    Int32.TryParse(value.Text, out num);
    return num;
}
else
    return 0; // Or whatever to signal failure

ところで、DialogResult プロパティを DialogResult.None とは別のものに設定すると、フォームを閉じるためのクリック イベントを必要とせずに、フォームが自動的に閉じられます。

于 2014-01-19T22:36:20.977 に答える