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

C#如何调用带sender和e参数的方法?resize_Handler内调用set_background报错如何处理

解决方案

报错原因

你编写的set_background(null, PaintEventArgs());触发non-invocable member cannot be used like a method错误,是因为实例化PaintEventArgs类时缺少new关键字,语法不合法。就算补全new关键字,你手动构造的PaintEventArgs也没有有效的Graphics绘图对象,绘图逻辑依旧无法正常运行。

推荐实现方式

优先使用该方案:你的set_background本身就是Paint事件的处理方法,resize场景下不需要手动调用该方法,只要触发窗体/控件的重绘逻辑,系统会自动生成合法的PaintEventArgs参数调用set_background,实现代码如下:

private void resize_Handler(object sender, System.EventArgs e) {
    // 触发重绘,自动调用绑定的Paint事件处理方法
    this.Invalidate();
}

该方案符合WinForm的绘图机制,兼容系统默认的双缓冲优化,不会出现resize时画面闪烁的问题。

手动调用兼容方案(不推荐)

如果你确实需要直接调用set_background方法,需要补全new关键字,同时手动创建有效的绘图上下文对象,代码如下:

private void resize_Handler(object sender, System.EventArgs e) {
    // 手动创建绘图对象,using语句会自动释放资源
    using (Graphics g = this.CreateGraphics()) {
        set_background(null, new PaintEventArgs(g, this.ClientRectangle));
    }
}

该方案跳过了系统默认的重绘优化逻辑,resize时大概率会出现画面闪烁,仅做特殊场景下的参考。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:06:01