ToolStripで作るMenuToolBar
ToolStripは高機能なコントロールですがメニュー代わりに使うには不便です。
そこで一階層ですがメニュー代わりに使えるMenuToolStripを作成しました。
起動時はこんな画面です。
メニュー1をクリックするとこうなります。
![]()
デザイナでの使い方はToolStripContainer内や単独で配置されたToolStripPanelに、MenuToolStripを配置します。
MenuToolStripにはタイトル部にはMenuToolStripTitleを配置し、各メニューには、ToolStripButtonを配置します。
どうやって実現させたかを説明します。
まず、ToolStripを継承したMenuToolStripカスタムコントロールを用意します。
ToolStripButtonを継承したMenuToolStripTitleカスタムコントロールも用意します。
MenuToolStripTitleはToolStripButtonを単に継承してクリックイベントを入れただけです。
MenuToolStripカスタムコントロールにShowSubMenuというメソッドを作成して、
ToolStripItem(ToolStripButtonを想定しています)のVisibleを操作します。
全て閉じた状態にするにはmenuをnullで呼びます。
ひとつのMenuToolStripTitleを有効にして開くにはMenuToolStripTitleを指定します。
あとは、MenuToolStripTitleクリックイベントやMenuToolStripの初回の描画で、
ShowSubMenuを呼んでやるだけです。
public void ShowSubMenu(MenuToolStripTitle menu)
{
bool buttonvisible = (menu != null);
foreach (ToolStripItem item in this.Items)
{
MenuToolStripTitle menutitle = item as MenuToolStripTitle;
if (menutitle != null)
{
if (menu != null )
{
if (item.Name == menu.Name)
{
buttonvisible = true;
}
else
{
if (menutitle.Checked)
{
menutitle.Checked = false;
}
buttonvisible = false;
}
}
else
{
buttonvisible = false;
}
continue;
}
ToolStripButton button = item as ToolStripButton;
if (button != null)
{
button.Visible = buttonvisible;
}
}
}



