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.Canceltrue

=== 更新 ===

我创建了一个新的 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;
        }
    }

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

现在,我确实发现如果我将 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 回答