2

これは以前に私に起こったことはありません。

uses 句の下に System.Windows.Forms 名前空間があり、DialogResult のプロパティを使用できます。以下のコードを見てください。それは私のプログラムに問題があるところです。

if (thewinform.ShowDialog=DialogResult.OK) then

私はそれをデバッグし、ダイアログのwinformが開きます。[OK] ボタンをクリックして DialogResult のチェックに戻ると、コードの if ブロックがスキップされます。その時点で、DialogResult が実際にはNILであることに気付きました

私はこれまでにこのようなものに遭遇したことはありません。

何か案は?ありがとう、

4

1 に答える 1

3

私は自分の質問に対する答えを見つけました。

ウィンドウフォームを純粋にダイアログボックスとして使用したい場合は、 FormClosing イベントを持つことはできません。

私の thewinform では、誤って FormClosing イベントを作成してしまい、それを忘れてしまいました。

method thewinform.thewinform_FormClosing(sender: System.Object; e: System.Windows.Forms.FormClosingEventArgs);
begin
    e.Cancel := true;
    hide;  
end;

この winform イベントを削除すると、ShowDialog と DialogResult は期待どおりに動作します。

これは、別のスタック オーバーフローの質問によく似ています。 なぜ ShowDialog は常に DialogResult.Cancel を返すのですか?

于 2012-10-23T15:39:14.437 に答える