0

次のようなコードがあります。

public form()
{
    InitializeComponent();
    init(); //read ini and try to minimize
}

private void timer1_Tick(object sender, EventArgs e)
{
}

iniメソッドではフォームを最小化して非表示にします(デバッグではform.visible = falseが表示されます)が、initメソッドを離れるとタイマーにジャンプしてvisible = trueに変更され、タスクバーとトレイにアプリが表示されます。トレイアイコンだけを表示したい。これを使用してフォームからトレイへの移動を最小限に抑えます。

これまでのところ、これを作成しましたが、フォームが表示されたときにフォームがリフレッシュのようなものになり、奇妙に見えるため、間違った方法で実装されている可能性があります。

private void notifyIcon1_Click(object sender, EventArgs e)
    {
        this.Show();
        this.WindowState = FormWindowState.Normal;
    }

    private void minimizeWindow()//this method is called on form resize
    {
        if (FormWindowState.Minimized == this.WindowState)
        {
            notifyIcon1.Visible = true;
            this.Hide();
            this.ShowInTaskbar = false;
        }
        else if (FormWindowState.Normal == this.WindowState)
        {
            notifyIcon1.Visible = false;
            this.ShowInTaskbar = true;
        }
    }
4

3 に答える 3

1

タスク バーからウィンドウを非表示にするには、ShowInTaskbarプロパティを使用できます。あなたのinit方法でこのことを試してください:

form.ShowInTaskbar = false;
于 2012-05-23T10:01:01.463 に答える
0

解決策は簡単です:

        private void notifyIcon1_Click(object sender, EventArgs e)
    {
        this.Show();
        this.WindowState = FormWindowState.Normal;
    }

    private void minimizeWindow()
    {
        if (FormWindowState.Minimized == this.WindowState)
        {
            notifyIcon1.Visible = true;
            this.Hide();
        }
        else if (FormWindowState.Normal == this.WindowState)
        {
            notifyIcon1.Visible = false;
        }
    }

        private void AAL_Load(object sender, EventArgs e)
    {
        minimizeWindow();//call it again
    }

form.ShowInTaskbar=false;を使用しないでください。それは多くの問題を引き起こすからです。

于 2012-05-24T08:40:39.503 に答える
0

プログラムがシステム トレイに最小化するように設定されている場合は、ロード時に最小化イベントを追加できます。

または、ロード時にMe.Opacity = 0( Me.Opacity = 1systray アイコンを再度クリックしたときに) を追加して、タスクバー ボタンを非表示にすることもできます。

于 2012-05-23T09:59:36.520 に答える