[Windows] パネルの反応を一時的に停止するには

一番乱暴な(しかし簡単)やり方は
panel.Enabled = !panel.Enabled;
のようにしてpanel全体のEnabledを変更する。

ただし、panelの子供が多いときには遅くなる。

遅くなることに関しては、msdnにも同じような質問があった。
Slow panel enable / disable
http://social.msdn.microsoft.com/forums/en-us/csharpgeneral/thread/EDA728EB-4CBC-4E5F-9F92-6E6566D17083

Answerとしてマークされていた回答は、
[sorucecode language=”csharp”]
panel.Visible = false;
panel.Enabled = !panel.Enabled;
panel.Visible = true;
[/sourcecode]
として、Enabledを触る前にVisibleをオフにすることで反応を止める、というもの。

手元でやってみると効果はあるのだが、falseからtrueにするときに一度panelが点滅するように見える。これはアプリケーションによってはユーザーに不安を与えることもあるだろうから、だれでも採用できる解ではなさそうだ。

広告

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。