-1

私はC#WPF.NET3.5でUIプログラムを開発しています。メインウィンドウにボタンがあります。ユーザーがこのボタンをクリックすると、モードレスダイアログが作成されます。フォーカスをメインウィンドウに戻し、ボタンをもう一度クリックすると、別のモードレスダイアログが作成されます。ダイアログの順序は次のとおりです。

M-> C1-> C2-> C3

ここで、Mはメインウィンドウ、C1、C2、C3は順番に子ウィンドウです。C1はモードレス(Ownerプロパティが設定されていないWindow.Show()メソッドを使用して作成)であり、C2とC3はモーダル(Ownerプロパティが設定されているWindow.ShowDialog()メソッドを使用して作成)です。私が期待しているのは、ユーザーがMから複数のC1、C2、およびC3ダイアログを作成できる必要があるということです。

私の問題は次のとおりです。2つのC1ダイアログを作成すると、すべてが正常に機能します。Mと2つのC1ダイアログですべてのUI操作を実行できます。ただし、1つのC1ダイアログからC2およびC3ダイアログを作成すると、別のC1ダイアログおよびMダイアログでUI操作を実行できなくなります。ただし、C3ダイアログでUI操作を実行できます。

C2ダイアログには、DispatcherTimerを使用して更新されるプログレスバーが含まれています。進行中の操作が完了すると、DispatcherTimerのイベントハンドラーからC3ダイアログが起動します。

貴重なご支援をよろしくお願いいたします。

4

1 に答える 1

0

モーダルダイアログを使用する以外に、C2とC3を常に一番上に設定する別の方法を見つける必要があります。

MSDNから:

アプリケーションの残りの部分で作業を続行する前に、モーダルフォームまたはダイアログボックスを閉じるか非表示にする必要があります。

C2とC3のTopMostWindow.Show()プロパティをtrueに設定し、の代わりに使用してみてくださいWindow.ShowDialog()

于 2012-06-06T13:57:57.507 に答える