3

このフォームには NotifyIcon オブジェクトがあります。ユーザーが [閉じる] ボタンをクリックしたときに、フォームを閉じずに非表示にしたい。その後、ユーザーがフォームをもう一度見たい場合は、システム トレイのアイコンをダブルクリックします。ユーザーがフォームを閉じたい場合は、アイコンを右クリックして [閉じる] を選択します。

閉じるボタンでフォームを閉じるのではなく、非表示にする方法を誰かに教えてもらえますか?

(または、誰かがどうしても同じ目的を達成するためのより良い方法を考えられる場合)

4

3 に答える 3

9

.FormClosingまず、メイン フォームのイベントを処理します(またはOnFormClosingメソッドをオーバーライドします)。trueに設定してキャンセルしe.Cancelます。

次に、を使用NotifyIconしてシステム トレイにアイコンを追加します。

最後に、 を呼び出してフォームを非表示にし.Hide()ます。

protected override void OnFormClosing(FormClosingEventArgs e) {
    if (IActuallyWantToCloseFlag)
        return;

    var ni = new NotifyIcon(this.components)
    {
        Icon = someIcon,
        Text = "My text",
        Visible = true
    };
    ni.DoubleClick += (sender, args) => { this.Show(); };

    this.Hide();
    e.Cancel = true;
}

これで始められるはずです。niフォームを表示/非表示するときにアイコンを非表示/表示し続けることができるように、おそらくメンバー変数を作成する必要があります。

于 2012-06-29T22:31:06.350 に答える
4

トレイアイコンアプリにしてみてはいかがでしょうか。そのための優れたチュートリアルがここにあります: http://www.developer.com/net/net/article.php/3336751/C-Tip-Placing-Your-C-Application-in-the-System-Tray.htm

于 2012-06-29T22:31:13.933 に答える
3

目的を達成する最も簡単な方法は、次のようなコードを含めて、FormClosing イベントをサブスクライブし、visible false を設定することです。

FormClosing += (sender, args) => { args.Cancel = true; Visible = false; };
于 2012-06-29T22:30:11.280 に答える