4

私はオーバーライドやオーバーロードなどが非常に弱いので、これを処理できませんでした。私の問題はこれです、

私はfrmDialogを持っています。プロセスメッセージやエラーメッセージなどを表示するためにのみ使用されます。ログからテキストを取得するため、変数を渡す必要はありません。(他のフォームの)各プロセスの後で、このフォームを作成し、ofrmDialog.ShowDialog()を呼び出します。私の問題は、テキストが空の場合でも、このダイアログボックスが開いて何も表示されないことです。だから私はこのShowDialogをオーバーライドしたかった。ShowDialogはDialogResultを返すので、これを行う方法を本当に理解できません。

public override DialogResult ShowDialog(){
    if(this.Text != string.Empty){
    return base.ShowDialog();
    }
    else{
    //don't do anything
    }
}

他にある場合、私は何を返しますか?本当に理解できません。

4

4 に答える 4

5

個人的には、ShowDialogをifステートメントに入れて、テキストが空でない場合にのみトリガーされるようにすることをお勧めします。

例えば

if(text is not empty)
{
    //Show dialog
}

そうすれば、現在発生している問題を回避できます。何かを返す必要がある場合は、DialogResultを必要なものと等しくなるように設定できます(たとえば、OKまたはキャンセル)。

ただし、コメントに基づいて、コードのelseステートメントにこれを含めることをお勧めします。

else
{
    return base.ShowDialog = "<OK>";
}
于 2012-08-13T10:46:31.607 に答える
1

ShowDialogをオーバーライドするのではなく、frmDialogが作成され、表示するテキストがある場合にのみ表示されるように、より高い位置に何かが必要です。

public DialogResult ShowMessage(string text)
{
    DialogResult dialogResult = DialogResult.OK;
    if (!string.IsNullOrEmpty(text))
    {
        FrmDialog frmDialog = new FrmDialog(text);
        dialogResult = frmDialog.ShowDialog();
    }
    return dialogResult;
}
于 2012-08-13T10:51:32.040 に答える
0

呼び出し元のいずれかがダイアログの結果を確認するかどうかに依存すると思いますが、コメントで、このメソッドを860回呼び出したと述べていますが、いずれかの呼び出し元が結果を確認しますか?そうでなければ、それが何を返すかはまだ実際には重要ではありませんが、WTFを回避することは将来的にのみ重要ですか?!ダイアログを表示していないときはOKを返します。

あなたは何かを返さなければならないので、おそらくDialogResult.None後で最も混乱しないでしょう

于 2012-08-13T10:58:27.627 に答える
0

else {return DialogResult.OK; }

于 2012-08-13T10:48:32.747 に答える