2

我知道您会想“不再是这个问题”,因为我在搜索时发现了一百个结果。但是,当我按照此处页面上的描述输入代码时,它只会最小化到开始菜单的正上方。

这是我使用的代码(我添加了一个消息框来查看代码是否被触发,但消息框永远不会弹出):

private void Form1_Resize(object sender, EventArgs e)
{
    MessageBox.Show("Works1");
    if (WindowState == FormWindowState.Minimized)
    {
        this.Hide();
    }
}

因为我不知道它是否链接到Form1or Form,所以我都尝试过,但无济于事。

private void Form_Resize(object sender, EventArgs e)
{
    MessageBox.Show("Works");
    if (WindowState == FormWindowState.Minimized)
    {
        this.Hide();
    }
}

现在,当您双击 时Form,它会将这一行放入Form1.Designer.cs

this.Load += new System.EventHandler(this.Form1_Load);

我需要一条类似的线来触发最小化事件吗?

如您所见,我完全迷路了:)

哦,它不会最小化到任务栏,因为我使用以下代码在运行时隐藏表单:

protected override void OnLoad(EventArgs e)
{
    Visible = false; // Hide form window.
    ShowInTaskbar = false; // Remove from taskbar.
    base.OnLoad(e);
}
4

3 回答 3

1

你需要活动

private void Form1_Resize(object sender, EventArgs e)
{

}

在 Windows 窗体设计器上创建事件处理程序

于 2013-03-11T11:18:28.790 回答
1
  1. NotifyIcon组件添加到您的表单。确保通过属性窗格设置图标,否则它将不可见。
  2. 为表单的事件创建一个事件处理程序Control.SizeChanged。在该事件处理程序中放置以下代码:

示例代码:

private void MainForm_SizeChanged(object sender, EventArgs e)
{
    if (WindowState == FormWindowState.Minimized)
        ShowInTaskbar = false;
}

然后为了使表单再次可见NotifyIcon.MouseDoubleClick事件处理程序,您可以放置​​以下代码:

private void trayIcon_MouseDoubleClick(object sender, MouseEventArgs e)
{
    WindowState = FormWindowState.Normal;
    ShowInTaskbar = true;
}
于 2013-03-11T11:34:23.920 回答
0

您需要了解的基本内容是事件。当您的表单(或任何控件)发生某些事情时会触发事件。例如,当窗体调整大小、加载或单击时,会引发一个事件。您可以挂钩此事件以在事件发生时执行您自己的代码。

在您的情况下,您希望在调整表单大小的情况下执行代码以最小化表单。因此,您需要将您的方法与 resize 事件挂钩。您的方法的名称不相关,因此让我们使用更好的名称:

private void HideWhenMinimized(object sender, EventArgs e)
{
    MessageBox.Show("Works1");
    if (WindowState == FormWindowState.Minimized)
    {
        this.Hide();
    }
}

HideWhenMinimized要将您的方法挂钩到Resize表单的事件中,您必须这样做:

this.Resize += new System.EventHandler(this.HideWhenMinimized);

如果您在表单的构造函数或事件中添加该行代码Load,那么只要调整表单大小,您的代码就会被调用。

于 2013-03-11T11:44:40.213 回答