ToolStripItem

ToolStripItemは、ToolStripまたはToolStripDropDownに配置できる要素の基本クラスです。

クラス階層

  • System.ComponentModel.Component
    • System.Windows.Forms.ToolStripItem
      • System.Windows.Forms.ToolStripButton … 画像やテキストが表示されるボタン
      • System.Windows.Forms.ToolStripControlHost
        • System.Windows.Forms.ToolStripComboBox
        • System.Windows.Forms.ToolStripProgressBar
        • System.Windows.Forms.ToolStripTextBox
      • System.Windows.Forms.ToolStripDropDownItem
        • System.Windows.Forms.ToolStripDropDownButton
        • System.Windows.Forms.ToolStripSplitButton
        • System.Windows.Forms.ToolStripMenuItem
      • System.Windows.Forms.ToolStripLabel … コメントやタイトルの表示にステータスバーで使用されるラベル
      • System.Windows.Forms.ToolStripSeparator
継承階層 - ToolStripItem クラス (System.Windows.Forms) | MSDN

プロパティ

プロパティ 内容
string Text 項目に表示されるテキスト
string Name 項目の名前。これはToolStripItemCollectionのキーとして使用できる
ToolStripItemDisplayStyle DisplayStyle テキストと画像をどのように表示するか
bool Visible trueならば、項目は表示される。これをtrueに設定しても、実際に表示されるまではfalseを返す

ControlのShow()やHide()に相当するメソッドはない

ToolStripItemAlignment Alignment 項目をToolStripの先頭または末尾にそろえる。ただしLayoutStyleがFlowまたはTableならば無視されるRemarks - ToolStripItem.Alignment Property (System.Windows.Forms) | Microsoft Learn

複数の項目をRightとしたときは、コンテナに最初に追加した項目が右端に配置される

bool AutoSize trueならば、自動的にサイズが合わせられる。既定はtrue

trueならばToolStripの向きによって高さまたは幅が調整され、必要な空間のみが使用される。またtrueのときはシステムで定義された最小サイズがあるため、それよりも小さくしたいならばfalseとする

Padding Margin 隣接する項目との間隔
     
プロパティ - ToolStripItem クラス (System.Windows.Forms) | Microsoft Learn

ツールチップ

プロパティ 内容
string ToolTipText ツールチップとして表示するテキスト
bool AutoToolTip trueならば、ToolTipTextが設定されていないときにTextプロパティの値をツールチップとして用いる
プロパティ - ToolStripItem クラス (System.Windows.Forms) | MSDN

ToolTipTextが空文字列、またはAutoToolTipがtrueのときTextが空文字列ならば、ツールチップは表示されません。

表示されるツールチップの色やフォントを変更するにはToolTipを代わりに表示し、オーナー描画で処理します。c# - Is it possible to change ToolStripMenuItem tooltip font? - Stack Overflow

StatusBarでツールチップを表示するには、ShowItemToolTipsをtrueとします。

イベント

イベント - ToolStripItem クラス (System.Windows.Forms) | Microsoft Learn

派生クラス

ToolStripButton

プロパティ
プロパティ 内容
bool CheckOnClick trueならば、クリックされたときに押された状態と押されていない状態を表す。既定はfalse
bool AutoToolTip 既定はtrueであり、ToolTipTextを設定していなくてもTextプロパティの値がツールチップとして表示される
     
プロパティ - ToolStripButton クラス (System.Windows.Forms) | Microsoft Learn

機能はButtonコントロールと同じですが、継承関係は大きく異なります。

ToolStripLabel

プロパティ
プロパティ 内容
bool IsLink trueならば、ハイパーリンクとして機能する
     
プロパティ - ToolStripLabel クラス (System.Windows.Forms) | MSDN

Labelクラス

ToolStripStatusLabel

ToolStripLabelを拡張したクラスであり、下表の3つのプロパティが追加されています。

プロパティ
プロパティ 内容
Border3DStyle BorderStyle 境界線のスタイル
ToolStripStatusLabelBorderSides BorderSides 境界線を表示する位置
bool Spring trueならば、空き領域を埋めるように幅が広がる
プロパティ - ToolStripStatusLabel クラス (System.Windows.Forms) | MSDN

ToolStripSeparator

メニュー項目の区切り線 (セパレータ) を表すクラスです。ToolStripSeparator クラス (System.Windows.Forms) | MSDN

メニュー デザイナでは項目のテキストを"-"とすると、ToolStripSeparatorとしてメニューに追加されます。備考 - ToolStripSeparator クラス (System.Windows.Forms) | MSDN

.NET 2.0より前はこのような区切り線を表すクラスはなく、MenuItemのテキストを"-"とすることで表現していました。How do you add a separator to a WinForms menu in C#? - Stack Overflow

ToolStripComboBox

ToolStripComboBox クラス (System.Windows.Forms) | Microsoft Learn

基本的にComboBoxクラスと同じです。

ToolStripTextBox

プロパティ
プロパティ 内容
bool ShortcutsEnabled trueならば、Ctrl + ZやCtrl + Cなどの定義されたショートカットキーが有効になる
bool AcceptsReturn trueならば、複数行形式のときにEnterで新しい行が追加される。さもなくば、Enterでフォームの既定のボタンがアクティブになる
Size DefaultSize 既定のサイズで、100x25ピクセル
Control Control このToolStripControlHostがホストしているコントロール。その実体はTextBoxを継承しているToolStripTextBoxControl
     
プロパティ - ToolStripTextBox クラス (System.Windows.Forms) | Microsoft Learn

TextBoxとは異なり、コンテナのサイズに合わせてサイズが拡大/縮小されるように設定できません。それを実現するにはこのToolStripTextBoxを継承したクラスを作成し、GetPreferredSize()をオーバーライドします。方法: ToolStripTextBox を拡大して ToolStrip の残りの幅に合わせる - Windows Forms .NET Framework | Microsoft Learn

ProcessMnemonic()は、空文字列以外がTextプロパティに設定されていないと、コンテナであるToolStripから呼ばれません。ProcessMnemonic - ToolStrip.cs

ToolStripProgressBar

ToolStripProgressBar クラス (System.Windows.Forms) | MSDN

ProgressBarクラス

タブによるフォーカス

コンテナであるToolStripのTabStopプロパティがfalseのとき、TabキーではToolStrip内の項目の間でフォーカスが移るのみで、ToolStrip外からはフォーカスが移りません。

異なるスレッドからの呼び出し

ToolStripItemはControlを継承しないため、そこで定義されているControl.Invoke()を利用したスレッドセーフな呼び出しができません。しかしこのコントロールのコンテナとなるToolStripはそれを継承するため、GetCurrentParent()で取得できるToolStripを通して呼び出します。.net - How do I make cross-threaded calls to a ToolStripStatusLabel? - Stack Overflow

もしくはToolStripItemの最上位のコンテナとなっているはずのFormからならば、そのまま呼び出せます。

ToolStripControlHostを継承しているToolStripTextBoxなどならば、そのControlプロパティからホストしているControlを得ることで、そのメソッドを呼び出せます。

Microsoft Learnから検索