VB.NET WinForm使用LinearGradientBrush后最小化恢复崩溃问题
解决VB.NET WinForm渐变背景与TextBox共存时最小化恢复崩溃问题
问题原因
问题根源在于LinearGradientBrush未正确释放GDI+资源。该类实现了IDisposable接口,每次在Paint事件中创建却不释放,会导致GDI资源持续泄漏,当窗体与TextBox触发重绘(比如最小化后恢复)时,资源耗尽引发崩溃。
解决方案
使用Using语句自动管理LinearGradientBrush的生命周期,确保每次使用后立即释放资源,从根源避免泄漏问题。
修正后的代码
Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint Using gradBrush As New LinearGradientBrush(Me.ClientRectangle, Color.Blue, Color.White, LinearGradientMode.BackwardDiagonal) e.Graphics.FillRectangle(gradBrush, Me.ClientRectangle) End Using End Sub
额外说明
- 所有实现
IDisposable接口的GDI+对象(如Brush、Pen、Font等),都建议用Using语句包裹,或手动调用Dispose()方法释放资源。 - 若需复用Brush以提升性能,可在窗体类中声明成员变量,在
Form_Load事件中初始化,最后在Form_FormClosed事件中调用Dispose()完成释放。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

