当您有一个按钮时,请执行以下操作:
Private Function Button_OnClick
Button.Enabled = False
[LONG OPERATION]
End Function
然后按钮不会变灰,因为长操作会阻止 UI 线程重新绘制控件。我知道正确的设计是启动后台线程/调度程序,但有时这对于简单的操作来说太麻烦了。
那么如何强制按钮在禁用状态下重绘呢?我在 Button 上尝试了 .UpdateLayout() ,但没有任何效果。我还尝试了 System.Windows.Forms.DoEvents(),它在使用 WinForms 时通常可以工作,但它也没有效果。