1
private void button2_Click(object sender, EventArgs e)
        {
            cl = new ChangeLink();
            cl.StartPosition = FormStartPosition.CenterParent;
            DialogResult dr = cl.ShowDialog(this);
            if (dr == DialogResult.Ok)
            {
                if (cl.getText() == "")
                {
                    MessageBox.Show("The TextBox Cannot Be Empty");
                    cl.ShowDialog(this);
                    return;
                }
                else
                {
                    label4.Text = cl.getText();
                    cl.Close();
                }
            }
            else if (dr == DialogResult.Cancel)
            { 
                cl.Close();
            }

cl は、テキストを取得する新しいフォームです。cl.getText() が空の場合は "" ユーザーにメッセージをスローし、ユーザーがメッセージボックスで [OK] をクリックすると、戻って新しいフォームダイアログを再度表示することを確認します。新しいフォームの [OK] ボタンを 1 回クリックすると、messaeBox メッセージが表示され、新しいフォームのダイアログ結果ボックスが再度表示されますが、[OK] をもう一度クリックしても、textBox がまだ空である場合、messageBox は再び表示されません。新しいフォームを閉じて、label4 テキストを空に設定するだけです。

ユーザーが [OK] をクリックして textBox が空になるたびに、ユーザーが [キャンセル] をクリックするか、テキスト ボックスに何かを入力してから [OK] をクリックするまで、新しいフォーム テキスト ボックス ダイアログが表示され続けます。

4

1 に答える 1

2

2 番目のフォームでチェックを行うと、よりクリーンになります。Form2 の OK ボタンのクリック イベントにコードを追加する必要があります。DialogResultOK ボタンのプロパティからデフォルトを削除してください。

private void button2_Click(object sender, EventArgs e)
{
    if(!string.IsNullOrEmpty(textBox1.Text))
        DialogResult = DialogResult.OK;
}
于 2012-09-16T03:55:04.787 に答える