最小化关闭

时间:2013-01-07 22:04:36

标签: c# minimize

总之,我有这个:

    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.

2 个答案:

答案 0 :(得分:2)

为什么要费心测试以查看当前窗口的状态?

只需将e.Cancel设置为true,然后将状态设置为最小化。

=== update ===

我创建了一个新的Windows Forms项目(使用VS2010和VS2012测试了4.0和3.5框架)。

从那里我将通知图标添加到Form1并将doubleclick事件(下面的代码)和图标设置为我拥有的一些随机图标文件。我还设置了表单formclosing事件(下面的代码):

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;
        }
    }

然后我运行了这个项目。当我单击关闭按钮时,表单被隐藏了。当我双击通知图标时,它又回来了。我在Windows 7上,但这不重要。

现在,我确实发现如果我将Form1作为子表单,那么就会出现一些奇怪现象。但我并不完全确定你在做什么。

答案 1 :(得分:0)

IIRC,你不能将this.ShowInTaskbar设置为false 使其最小化;为了做你想做的事,你需要这个:

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

然后,无论您使用什么将表单带回标准视图,您只需输入:

this.Visible = true;

如果您仍在寻找最小化动画,请在设置可见性之前最小化表单。