Winforms Appに2つのフォームクラス(Form1とForm2)があります。少なくとも1つのモーダルウィンドウが開いているときにwinformsアプリケーションを最小化する方法
Form1は、このようなものです:
Form2のは、このようなものです(ShowInTaskbar =偽):
し、Form1上でこのコード:
Form2 someForm = new Form2();
private void btOpenAnotherWindow_Click(object sender, EventArgs e)
{
if (someForm.ShowDialog(this) == DialogResult.OK)
MessageBox.Show("OK!!!");
else
MessageBox.Show("Not OK.");
}
つまり、ボタン付きウィンドウをモーダルに開きます別のウィンドウをクリックし、ユーザーが2番目のウィンドウを閉じるのを待ちます( "OK"または "キャンセル"ボタンをクリックします)。どのように閉じられたかによって、アクション(ここではMessageBox.Show()呼び出し)を交互に実行します。
私が必要:
- 、ユーザが同時に複数のウィンドウを使用することができます。 (モーダルフォームなので、私はShow()の代わりにShowDialog()を使用した)
- フォームが閉じたときに、フォームが閉じられた方法に応じて何かをする(if(someForm.ShowDialog(this)...) WHOLE APPを最小限に抑えるために(ユーザーなど)できるようにするには
- 。
- 正しく元の状態に「unminimize」アプリすることができるようにする。
- WIN + M(すべてを最小化)に対応するためのプログラムキーの組み合わせ
上記の例では、2つの方法で失敗します。
- WIN + Mに応答しない(必要性5)
- (必要性3)タイトルバーのボタンをクリックすると最小化しますが、メインフォーム(Form1)がないので、それは錯覚であるとき、アプリは最小限に抑えるように思えます最小化されず、実際には他の開かれたウィンドウの後ろに隠れています。空のデスクトップでサンプルを実行するだけで、実際に何が起こるかがわかります。 PICは、次のとおりです。
後:注
:
- メインフォームが
- 最小化されていない
は前にボタンがクリックされた最小化Form2画面の左端にあります。
Form2は完全なウィンドウです(ダイアログウィンドウそのものではありません)。私はユーザーが閉じていなければそれを操作する必要があります。また、ユーザーはアプリケーションを完全に無効にする必要があります彼はそれを必要とする。
私はここに実際のフォームを投稿することはできません、それはこれらのモックアップよりも明確になります。
多くのレベルのモーダルウィンドウ(この例のように2つだけでなく)で動作するソリューションが必要です。助言がありますか?
私は、全体の窓(偽= this.enable)を無効にし、ShowDialogメソッドの代わりにショーを使用していますが、それは、「開かれているすべてのウィンドウを最小化」の問題に何もしないことができます。 –