-1

アプリケーションをバックグラウンドで実行したまま、フォームを非表示にしたい。私はnotifyIconを使用しましたが、常に表示されたままです。

「this.Hide();」を使用しました フォームを非表示にしますが、残念ながらアプリケーションが近くなります(例外はありません)。

私もスレッドを使用しており、このフォームは2番目のスレッドにあります。

どうすれば解決できるか教えてください。

4

2 に答える 2

1

フォームのサイズ変更とアイコンクリックイベントの通知用に次のイベントハンドラーを追加します

 private void Form_Resize(object sender, EventArgs e)
 {
    if (WindowState == FormWindowState.Minimized)
    {
        this.Hide();
    }
 }
 private void notifyIcon_Click(object sender, EventArgs e)
 {
    this.Show();
    this.WindowState = FormWindowState.Normal;
}

しかし、これはあなたのアプリケーションを閉じません

于 2011-09-23T11:44:10.440 に答える
1

私もスレッドを使用しており、このフォームは2番目のスレッドにあります。

私の水晶玉は、フォームを表示するためにShowDialog()を使用したと言っています。はい、モーダルダイアログでHide()を呼び出すと、ダイアログが閉じます。必然的に、モーダルダイアログは通常、アプリケーションのすべてのウィンドウを無効にします。非表示にすると、ユーザーがプログラムに戻る方法がなくなり、アクティブ化するウィンドウが残りません。このフォームが別のスレッドで実行されることは、それ以外の場合は動作に影響しません。

これを回避するには、Application.Run(new SomeForm())を呼び出す必要があります。今ではモーダルではなく、問題なく非表示にできます。ただし、実際には、 UI以外のスレッドにフォームを表示することは避けてくださいその理由はありません、あなたのメインスレッドはすでにかなり能力があります。

于 2011-09-23T12:37:35.397 に答える