尝试在另一种方法中提及事件处理程序时出现难以理解的错误
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();
}