ボタンがある場合は、次のようにします。
Private Function Button_OnClick
Button.Enabled = False
[LONG OPERATION]
End Function
長い操作により UI スレッドがコントロールを再描画できないため、ボタンはグレー表示されません。バックグラウンドスレッド/ディスパッチャーを開始するのが正しい設計であることは知っていますが、単純な操作には面倒な場合があります。
では、無効な状態でボタンを強制的に再描画するにはどうすればよいですか? ボタンで .UpdateLayout() を試しましたが、効果はありませんでした。WinFormsの使用時に通常動作する System.Windows.Forms.DoEvents() も試しましたが、効果もありませんでした。