チェックボックスは状態を切り替えるのに適したコントロールです。例えば「ボタンを表示する」と表示されているチェックボックスにチェックを付けるとボタンは表示され、チェックを外すとボタンは非表示になります。
では、Enabled が False になっているチェックボックスにチェックがされていた場合は、ボタンは表示されるのでしょうか?
|
図1:Enabled が False のチェックボックス
|
|
チェックボックスは無効
これはチェックが外されている状態(ボタンは非表示)になるのが適切だと思います。Enabled が False の場合はユーザに対して応答しないだけではなく、チェックボックス自体が無効になると思うからです。
チェックボックスは読み取り専用
しかし、Enabled が False に設定されているのを読み取り専用として扱いたい場合もあります(ありますよね?)。読み取り専用にしたいのであれば AutoCheck プロパティを False に設定してやればいいのですが、見た目上読み取り専用であることがわかりません。また昔の言語(VB6 など)は AutoCheck プロパティが存在せず、しかたなく Enabled を False に設定しています。(これはどのコントロールにも言えることですが、読み取り専用であることがわかる画期的なユーザインタフェースが必要なのだと思います。)
ユーザの混乱を避けるには
このように Enabled が False のチェックボックスには、二通りの解釈の仕方が存在してしまっています。これではユーザも混乱してしまうのではないでしょうか。
そこでどうすれば混乱が避けられるのかを考えたのですが、いいアイディアが浮かびませんでした。徐々に「チェックボックスは無効」であると考える方向に統一することも考えたのですが、そう簡単にはいきません。しかし、これから作成されるアプリケーションは「チェックボックスは無効」である、という考えで作成されていけば、その考えも広まり統一できるのではないかと思います。