【问题标题】:No Overload For 'button10_Click' matches delegate 'EventHandler'\'button10_Click\' 没有重载匹配委托 \'EventHandler\'
【发布时间】:2022-11-25 13:30:15
【问题描述】:

单击 Windows 窗体中的按钮不起作用。

private void button10_Click(object sender, EventArgs e, ref Graphics g, ref EVFDataSet evfDataSet, ref int iWidth, ref int iHeight) {

        int cx = iWidth;
        int cy = iHeight;

        int iw = evfDataSet.sizeJpegLarge.width;
        int ih = evfDataSet.sizeJpegLarge.height;
         
        long left = evfDataSet.zoomRect.x;
        long top = evfDataSet.zoomRect.y;

        long x = left * cx / iw;
        long y = top * cy / ih;

        long width = evfDataSet.zoomRect.width * cx / iw;
        long height = evfDataSet.zoomRect.height * cy / ih;

        Pen pen = new Pen(Color.FromArgb(255, 255, 255));
        pen.Width = 3;

        int str = Convert.ToInt32(numericUpDown2.Value);
        for (int i = 0; i < str; i++)
        {
            varas.recty.DrawRectangle(pen, x + 1, y + 1, width + 1, height + 1);
        }
    }

使用此方法时,代码有效。但是在尝试单击按钮时这是不可能的。

【问题讨论】:

  • 您不能只为事件处理程序编写自己的方法签名。使用普通签名并以其他方式捕获其他值,例如在类字段或属性中。
  • 什么是varas.recty?这段代码实际上应该实现什么?请提供完整和清晰的解释。

标签: c#


【解决方案1】:

您不能随意将参数添加到事件处理程序。当 Button 引发其 Click 事件时,它会将参数传递给 sendere 参数。您认为这些其他参数的参数究竟来自哪里?如果您希望该方法处理 Click 事件,请摆脱它们。如果您想自己显式调用该方法,那很好,但是它无法处理该事件,前两个参数毫无意义。如果您需要编写两种不同的方法 - 一种用于事件处理程序,另一种调用您自己,可能来自事件处理程序 - 然后编写两种不同的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多