2011-11-10 25 views
1

私はC#を使用してWindowsフォームアプリケーションを使用しています。ユーザー名とパスワードなどのログイン情報をユーザーに要求するダイアログボックスを作成しました。 If-else文を使用すると、ログインの詳細が一致すると、「成功」というメッセージボックスが表示され、ダイアログボックスが自動的に閉じます。これは問題ありません。しかし、間違ったログインの詳細を入力すると、「間違った詳細が入力されました」というメッセージボックスがelseステートメントに表示されます。しかし、そのメッセージボックスを閉じると、ダイアログボックスが消えます。私はこれが起こることを望んでいない。ユーザーが正しい詳細を再度入力するために、ダイアログボックスを表示する必要があります。ダイアログボックスを閉じるのを避けるためにいくつかのコード行を入力する必要がありますか?ダイアログボックスを表示したままにする

+0

私たちは私だけでは私の問題を定義した理由です...それを分離するのは難しい約1000 lines..Itsに相当するその大きなプロジェクトコード@Allan見 –

+0

を取ることができるようにあなたがここにコードしている追加します。あなたがループ内でダイアログを表示したい場合は、交換してください「(dialogForm.ShowDialog()あれば...」と「しばらく...」: –

答えて

2

私は新しいフォームを作成し、ダイアログとしてそれを表示するためにあなたを示唆しているであろう:

1)を作成し、新しいフォーム
2)
falseにフォームの偽
3)を設定しMaximizeButtonにフォームの設定MinimizeButton 4)コンポーネントを追加:、1Xのテキストフィールドを2倍ボタン(OKボタンとキャンセルボタン)
5)OKボタンの設定DialogResultへ:OK
6)にキャンセルボタンの設定DialogResult:
7キャンセルは)パブリックメソッドを追加します。 :public string GetText(){return textbox.te xt};メインフォームにテキストボックス

ため
は 8)を設定し、パスワードの文字:

var dialogForm = new MyNewForm(); 
if (dialogForm.ShowDialog() != DialogResult.OK) 
{ 
    Application.Exit() 
} 
else 
{ 
    var pw = dialogForm.GetText(); // string var pw stores the enterd pw now 
    // validate your password here 

    if (PasswordIsCorrect()) 
    { 
     // some logic here 
    } 
} 

あなたは、ループ内でダイアログを表示置き換えたい場合は、 "もし(dialogForm.ShowDialog()..." 「しばらく...」

注意:コードuntestet
注意2:お使いの検証ロジックが安全であることを確認してください経験豊富なユーザーは、検証ロジックを取得するようにアプリケーションをコンパイルすることができます

希望することができますか?種類について

+1

は:-)私の最新の編集を確認してくださいUそんなに –

+0

問題ありませんに感謝します – Grrbrr404

0

FormClosingイベントを確認し、イベントを確認します。イベントをチェックし、フォームに含まれているボタン以外のものからフォームが来ている場合は、フォームを閉じないようにするコードを記述します。

関連する問題