You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#控制台游戏OnClick绑定progressClick函数参数错误求助

解决CS7036错误:正确绑定带自定义参数的OnClick事件

问题核心

你遇到的CS7036错误,根源在于SVGElement.OnClick的类型是Action?——它要求绑定一个无参数的方法委托,但你的写法既不符合委托签名,也不是正确的绑定方式:

  • 直接写OnClick = progressClick(100)是在调用方法,而非绑定委托;
  • 原progressClick方法带EventArgs args参数,和Action无参数的要求不匹配。

解决方案

步骤1:调整方法签名并使用Lambda绑定

先修改progressClick,去掉不需要的EventArgs参数:

public void progressClick(int Ycord)
{
    AddElement(
        new Rectangle()
        {
            X = 150,
            Y = Ycord,
            Width = 10,
            Height = 60,
            Fill = "transparent",
            Stroke = "orange",
            StrokeWidth = 100
        }
    );
    Update();
}

然后在绑定OnClick时,用Lambda表达式包裹方法调用,把100作为参数传入:

AddElement(
    new Circle()
    {
        // 点击用的按钮
        R = 100,
        CX = 550,
        CY = 500,
        Fill = "orange",
        Stroke = "red",
        StrokeWidth = 40,
        OnClick = () => progressClick(100)
    }
);
Update();

为什么这样可行?

  • Lambda表达式() => progressClick(100)会生成一个无参数的委托,完美匹配Action?的类型要求;
  • 闭包机制会捕获100这个值,在点击事件触发时自动传递给progressClick。

额外说明

如果后续发现OnClick实际是带EventArgs参数的委托(比如Action<EventArgs>),只需调整Lambda表达式即可:

OnClick = (args) => progressClick(args, 100)

同时把progressClick的签名改回public void progressClick(EventArgs args, int Ycord)即可。

内容的提问来源于stack exchange,提问作者gian12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 00:05:03