注意:ここで紹介している方法は、.NET Framework 2.0以降でのみ使用できます。
ToolStripContainerコントロール(または、ToolStripPanelコントロール)に配置されているToolStripコントロールの位置をプログラムで変更するには、ToolStripPanel.Joinメソッドや、ToolStrip.Locationプロパティを使います。
例えばToolStripContainerの上部のToolStripPanelに配置されているToolStripを下や左右など違う場所に移動するには、ToolStripPanel.Joinメソッドを使います。
以下の例では、ToolStrip1をToolStripContainer1の下部のToolStripPanelに移動させています。ここでは事前にToolStrip1が下部にあるか調べていますが、下部にあるToolStrip1をJoinメソッドで下部に移動してもエラーになりません。ただ、ToolStrip1の位置が変更される可能性があります。
'ToolStrip1がToolStripContainer1の下にあるか調べる If Not ToolStripContainer1.BottomToolStripPanel.Contains(ToolStrip1) Then '下にない時は、下に移動する ToolStripContainer1.BottomToolStripPanel.Join(ToolStrip1) End If
//ToolStrip1がToolStripContainer1の下にあるか調べる if (!ToolStripContainer1.BottomToolStripPanel.Contains(ToolStrip1)) { //下にない時は、下に移動する ToolStripContainer1.BottomToolStripPanel.Join(ToolStrip1); }
Joinメソッドには、移動する行を指定することもできます。
以下の例では、ToolStrip1をToolStripContainer1の上部の一番最後の行に移動させています。
'ToolStrip1をToolStripContainer1の上部の最後の行に移動する
'2番目のパラメータに実際の行数より大きい値を指定しても、最後に移動する
ToolStripContainer1.TopToolStripPanel.Join(ToolStrip1,
ToolStripContainer1.TopToolStripPanel.Controls.Count)
//ToolStrip1をToolStripContainer1の上部の最後の行に移動する
//2番目のパラメータに実際の行数より大きい値を指定しても、最後に移動する
ToolStripContainer1.TopToolStripPanel.Join(ToolStrip1,
ToolStripContainer1.TopToolStripPanel.Controls.Count);
このようにToolStripを最後の行に移動させる時はうまく行きますが、それ以外ではおかしな動作をしました。色々試した結果、現在よりも後ろの行に移動する時はうまく行くようですが、それ以外では大抵うまく行きませんでした。
Joinメソッドには、移動する座標を指定することもできます。また、同じToolStripPanel内で移動するならば、ToolStrip.Locationプロパティで移動させることもできます。
言うまでもないかもしれませんが、ToolStripPanelはToolStripを自動で整列させるため、移動先の座標を指定してもその通りの位置に移動するとは限りません。ToolStripPanelがどのようにToolStripを整列れるさせるかは、実際にマウスでToolStripをつかんで移動させてみると分かります。つまり、ToolStripはToolStripPanel内のどこかの行に属することになるため、その中間の位置に配置できませんし(上か下のどちらかの行に配置されます)、ToolStripが一つもない行も許されず、そのような位置を指定しても行が詰められます(例えば、現在1行しかないのに3行目に移動させようとしても、2行目にしか移動しせん)。また、ToolStripPanelの幅以上の位置を指定しても、適当な位置に戻されてしまいます。
ToolStrip1をToolStripContainer1の先頭に移動する例を示します。しかしこのようにしても、ToolStrip1がすでに1行目にあり、ToolStrip1の前に別のToolStripがある場合は、先頭になりませんでした。
'ToolStrip1を先頭に移動する ToolStrip1.Location = New Point(0, 0) 'ToolStrip1をToolStripContainer1の上部の先頭に移動する ToolStripContainer1.TopToolStripPanel.Join(ToolStrip1, 0, 0)
//ToolStrip1を先頭に移動する ToolStrip1.Location = new Point(0, 0); //ToolStrip1をToolStripContainer1の上部の先頭に移動する ToolStripContainer1.TopToolStripPanel.Join(ToolStrip1, 0, 0);
(この記事は、「.NETプログラミング研究」で紹介したものを基にしています。)
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。