ファイルのプロパティ「属性の詳細」のラジオボタン的動作をするチェックボックスの意味


ラジオボタン的動作をするチェックボックスって?

ラジオボタン的動作をするチェックボックスというのは複数個のチェックボックスがならんでいるにもかかわらず、 実際には複数にチェックできず、どれかしか選べないという排他的選択用のラジオボタンにすればいいのにという謎なチェックボックスのことです。

どんなものなの?

謎といわれることの多いWindows 2000, XP, Server 2003などのファイルのプロパティの属性の詳細設定のダイアログ中にあるチェックボックスです。

「属性の詳細」

このダイアログ中に「圧縮属性または暗号化属性」というグループがありますが、この中のチェックボックスはどちらかしか選べないようになっています。例のラジオボタン的チェックボックスです。

両方選べないチェックボックスに意味はあるのでしょうか?

あります。一見意味不明な挙動ですがちゃんと意味があります。

まず、a.txt に圧縮属性を設定し、 b.txt を暗号化属性を設定します。

a,txt と b.txt の「属性の詳細」を表示して設定。

そしてエクスプローラ等で両方選択した状態でプロパティを開き、同じように「属性の詳細」を開きます。すると下の画面のようになると思います。

a,txt と b.txt の「属性の詳細」

両方のチェックボックスにチェックがあります(グレーになっていますが)。このように複数のファイルが選択された状態で複数の設定状態―どちらか一方のみではない―をあらわすためにチェックボックスになっているのです。

このグレーの状態は「チェックしているのとしていないものが混在してます」という「チェックされている、されていない」に続く第三の状態です(下に参考ページをリンクしておきます)。見た目的には意味を取りづらい気もしますが。

ともあれ、さも意味はないようで意味はあるということです。ちょっと考えればわかるのですが案外知られていないようなので書いてみました。

参考

ちなみに.NET Framework(Windows Forms)では……

ThreeState プロパティは、コントロールで 2 ステートと 3 ステートのどちらをサポートするのかを決定します。 Checked プロパティを使用して、2 ステートのチェック ボックス コントロールの値を取得または設定し、 CheckState プロパティを使用して、3 ステートのチェック ボックス コントロールの値を取得または設定します。

メモ ThreeState プロパティが true に設定されている場合、 Checked プロパティは、チェックされた状態と不確定状態のどちらであるかを示す true を返します。

という感じになっています。CheckStateCheckState.Indeterminateという値を指定すると中間という風になります。

[Visual C# .NET 2003のIDE上で指定した例]