尝试在另一种方法中提及事件处理程序时出现难以理解的错误

c#

我想通过单击工具条菜单项将我的 WinForms 应用程序移动到系统托盘中,但是当我尝试提及我编写的方法时,出现如下错误:Conversion from System.EventArgs to System.Windows.Forms.MouseEventArgs not possible,但我不想转换任何内容,我只是给方法我的论点 e。

我尝试使用的方法声明:

private void Form1_Resize(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                Hide();
                notifyIcon.Visible = true;
            }
        }

private void notifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            Show();
            this.WindowState = FormWindowState.Normal;
            notifyIcon.Visible = false;
        }

(请注意,当调整我的表单大小并双击系统托盘中的图标时,这两个是简单的事件处理程序)

我想像这样使用它们

private void inTrayVerschiebenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form1_Resize(sender, e);
            notifyIcon_MouseDoubleClick(sender, e);
        }

但在后者上e,我收到了上述错误。我目前正在使用 VS 2019 和 C#

回答

notifyIcon_MouseDoubleClick需要MouseEventArgs论证;现在,e是一个EventArgs参数;无论是实际上一个MouseEventArgs实例:我们不知道; 但是:您不能将 an 传递EventArgs给需要MouseEventArgs值的东西。编译器只是告诉您不能为您做到这一点,因此:您将必须更具体并告诉它如何获取MouseEventArgs要传递给notifyIcon_MouseDoubleClick.

也许另一种选择;稍微重构一下代码,即


private void Form1_Resize(object sender, EventArgs e)
{
    HandleResize();
}
private void HandleResize()
{
    if (this.WindowState == FormWindowState.Minimized)
    {
        Hide();
        notifyIcon.Visible = true;
    }
}

private void notifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)
{
    HandleDoubleClick();
}
private void HandleDoubleClick()
{
    Show();
    this.WindowState = FormWindowState.Normal;
    notifyIcon.Visible = false;
}
private void inTrayVerschiebenToolStripMenuItem_Click(object sender, EventArgs e)
{
    HandleResize();
    HandleDoubleClick();
}


以上是尝试在另一种方法中提及事件处理程序时出现难以理解的错误的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>