0

私はac#winformアプリケーションに取り組んでおり、クリックするとパスワードを求めるダイアログが表示されるボタンがあります。パスワードが正しければ、ボタンの下のコードが実行されます。これがメインフォームのコードです。

    password pass = new password();
       pass.ShowDialog();
      if (pass.DialogResult == DialogResult.OK)
        {
            if (pass.Password == "12")
            {

以下は、パスワードフォームの[OK]ボタンにあるコードです

      private void btnOK_Click(object sender, EventArgs e)
    {
        button1.DialogResult = DialogResult.OK;
    }

問題は、パスワード フォームの [OK] ボタンを 2 回クリックする必要があり、機能していることです。理由はありますか?

4

4 に答える 4

3

ダイアログ フォームの AcceptButton プロパティを [OK] ボタンに設定し、btnOK_click イベントを削除します。

于 2012-07-10T06:42:44.483 に答える
1

Button.DialogResult のドキュメントから、ボタンがクリックされたときにどの DialogResult を Form に返すかをプロパティが定義していることがわかります。これはbutton1.DialogResult = DialogResult.OK;、クリック イベントではなく、コンストラクターにコード行を含めるか、単にデザイナーで設定する必要があることを意味します。

于 2012-07-10T06:44:08.570 に答える
0

this.Close(...)内部に電話するbtnOK_Click

private void btnOK_Click(object sender, EventArgs e)
{
    button1.DialogResult = DialogResult.OK;
    this.Close();
}
于 2012-07-10T06:38:35.600 に答える
0

パスワードフォームの AcceptButton を btnOK に設定します。クリック イベント ハンドラを削除します。イベント ハンドラーは必要ありません - ドキュメントから - このプロパティの DialogResult が None 以外に設定されていて、親フォームが ShowDialog メソッドを介して表示された場合、ボタンをクリックすると、フックしなくても親フォームが閉じますイベントをアップします。ボタンがクリックされると、フォームの DialogResult プロパティがボタンの DialogResult に設定されます。

MSDN : http://msdn.microsoft.com/en-us/library/system.windows.forms.button.dialogresult.aspx

于 2012-07-10T06:48:54.377 に答える