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

如何在btnGo_Click事件中触发.NET Label的Paint事件?

解决方案

要在btnGo_Click事件中触发Label1的Paint事件,直接调用控件的重绘方法即可,WinForms提供了两种常用实现方式:

方法1:调用Invalidate()

Invalidate()会标记Label1为需要重绘状态,系统会在合适时机自动触发Paint事件,适合无需立即重绘的场景:

Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
    Label1.Invalidate()
End Sub

方法2:调用Refresh()

Refresh()会立即强制控件完成重绘(等效于Invalidate() + Update()的组合操作),适合需要立刻看到重绘效果的场景:

Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
    Label1.Refresh()
End Sub

额外优化提示

你的原代码在每次Paint事件触发时都从磁盘读取图片,会产生频繁IO操作影响性能,还可能引发资源泄漏问题。建议提前加载图片并缓存,示例如下:

Private img As Image

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
    img = Image.FromFile("f:/myImage.bmp")
End Sub

Private Sub Label1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Label1.Paint
    Dim g As Graphics = e.Graphics
    g.DrawImage(img, New Point(0, 0))
End Sub

' 窗体关闭时释放图片资源
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
    img.Dispose()
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:47:04