0

要するに、私はこれを持っています:

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
            e.Cancel = true;
            this.WindowState = FormWindowState.Minimized;
            this.ShowInTaskbar = false;
    }

そして、それは機能していません(宛先の代わりに「X」を押すとプログラムが閉じます-最小化します); 何が問題なのですか?

this.ShowInTaskbar = false; // is used because app goes to system tray and it doesn't need to be showed in taskbar.
4

2 に答える 2

2

ウィンドウが現在どのような状態にあるかを確認するためにわざわざテストするのはなぜですか?

に設定し、状態を最小化に設定e.Cancelするだけです。true

===更新===

新しいWindowsフォームプロジェクトを作成しました(VS2010とVS2012を使用して4.0と3.5の両方のフレームワークをテストしました)。

そこから、通知アイコンをForm1に追加し、ダブルクリックイベント(以下のコード)とアイコンを、持っていたランダムなアイコンファイルに設定しました。また、フォームのフォームクロージングイベント(以下のコード)を設定します。

public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
        }

        private void Form1_FormClosing( object sender, FormClosingEventArgs e ) {
            e.Cancel = true;
            this.WindowState = FormWindowState.Minimized;
            this.ShowInTaskbar = false;
        }

        private void notifyIcon1_MouseDoubleClick( object sender, MouseEventArgs e ) {
            this.WindowState = FormWindowState.Normal;
        }
    }

それから私はプロジェクトを実行しました。[閉じる]ボタンをクリックすると、フォームが非表示になりました。通知アイコンをダブルクリックすると、元に戻りました。私はWindows7を使用していますが、それは問題ではありません。

さて、Form1を子フォームにすると、奇妙なことが発生することがわかりました。しかし、それがあなたがしていることであるかどうかは完全にはわかりません。

于 2013-01-07T22:06:40.210 に答える
0

IIRC、this.ShowInTaskbarをfalse設定して、最小化することはできません。あなたがやろうとしていることをするために、あなたはこれを必要とするでしょう:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    e.Cancel = true;
    this.Visible = false;
}

次に、フォームを標準ビューに戻すために使用しているものは何でも、次のように入力します。

this.Visible = true;

それでも最小化アニメーションを探している場合は、可視性を設定する前にフォームを最小化してください。

于 2013-01-07T22:20:43.637 に答える