DOBON.NET

ToolStripItemのVisibleとAvailableプロパティの違い
ToolStripItem(ツールバー、メニュー、ステータスバーの項目)が表示されているか調べる

注意:ここで紹介している方法は、.NET Framework 2.0以降でのみ使用できます。

ToolStripコントロールに表示されている項目(ToolStripItem)を表示または非表示にするには、ToolStripItem.Visibleプロパティを使えばよさそうですが、そう単純ではありません。ToolStripItemにはこれと同じような目的に使用する、Availableプロパティというものが存在するのです。

両者の違いについてMSDNの「ToolStripItem.Availableプロパティ」には、次のように書かれています(そのまま引用します)。

「Available プロパティは、Visible プロパティとは異なります。Available が ToolStripItem を表示するかどうかを示すのに対し、Visible は ToolStripItem およびその親を表示するかどうかを示します。Available と Visible のいずれかを true または false に設定すると、他のプロパティも true または false に設定されます。」

つまり、両者は値の設定に関しては全く同じですが、取得される値は異なる場合があります。Availableプロパティは、単純にそのToolStripItemを表示する設定になっているかどうかを示します。これに対してVisibleプロパティは、現在そのToolStripItemが画面に表示されているかどうかを示します。

例えば、AvailableプロパティがFalseであれば、Visibleプロパティは常にFalseです。しかしAvailableプロパティがTrueであっても、親のToolStripやToolStripItemが非表示だったら、VisibleプロパティはFalseです。親が存在していない場合や、ToolStripItemがメニューのサブ項目で、その項目が画面に表示されていない場合、オーバーフローメニューに入って表示されていない場合などでも、VisibleプロパティはFalseになります。(しかし、オーバーフローメニューに入らずに表示されない場合は、VisibleプロパティもTrueになります。)

補足:Visual StudioのフォームデザイナのプロパティにはVisibleプロパティのみ表示され、Availableプロパティは表示されませんが、設定に関してはどちらも同じことを考えると、納得できます。

補足:以前この記事で、別のToolStripItemの子となっているToolStripMenuItemの場合はAvailableプロパティをFalseにすることにより非表示にできるが、VisibleプロパティをFalseにしても非表示にできないと書いていましたが、その後このような現象は確認できませんでした。

  • 履歴:
  • 2014/9/15 AvailableプロパティとVisibleプロパティの違いの説明をより詳しく書き直した。設定におけるAvailableプロパティとVisibleプロパティの違いを削除し、補足とした。タイトルを変更。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。
共有する

この記事への評価

この記事へのコメント

この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームへ移動します。通常のご質問、ご意見等は掲示板へご投稿ください。