在 StatusStrip, ToolStrip 和 ToolStripContainer 中,預設只能放入八種控制項目,分別是: Button, Label, SplitButton, DropDownButton, Separator, ComboBox, TextBox, ProgressBar
那如果有其他控制項目想要放入 ToolStrip 中該怎麼做呢?其實 ToolStrip 中還可以放入 ToolStripControlHost ,ToolStripControlHost 的作用就是包覆其他控制項目,讓其他控制項目可以出現在 ToolStrip 之中。只是並沒有出現在介面中,也無法用拖拉的方式產生。
本篇就示範將 TrackBar 放入 ToolStripControlHost 中,再將 ToolStripControlHost 放入到 ToolStrip 內,使其達成在 ToolStrip 中放入除原先說明的八種控制項目以外的控制項目。
簡單建立一個 TrackBar ,這裡比較要注意的是 AutoSize 需要設定為 false 如果沒有設定會變得太高
上面建立完後並沒有將 TrackBar 放入 Form 中,現在在建立 ToolStripControlHost 要直接將 TrackBar 直接放入建構子,就會把 TrackBar 塞入剛建立的 ToolStripControlHost 了。之後只要再將 ToolStripControlHost 放入 ToolStrip 就可以了。
是不是非常簡單?想當初筆者還研究了一段時間才找到 ToolStripControlHost ,下面附上完整程式碼:
那如果有其他控制項目想要放入 ToolStrip 中該怎麼做呢?其實 ToolStrip 中還可以放入 ToolStripControlHost ,ToolStripControlHost 的作用就是包覆其他控制項目,讓其他控制項目可以出現在 ToolStrip 之中。只是並沒有出現在介面中,也無法用拖拉的方式產生。
本篇就示範將 TrackBar 放入 ToolStripControlHost 中,再將 ToolStripControlHost 放入到 ToolStrip 內,使其達成在 ToolStrip 中放入除原先說明的八種控制項目以外的控制項目。
動態產生 ToolStrip
我們先建立一個 ToolStrip ,使其固定在 Form 的最下方:
var toolStrip = new ToolStrip();
this.Controls.Add(toolStrip);
toolStrip.Dock = DockStyle.Bottom;
簡單建立一個 TrackBar ,這裡比較要注意的是 AutoSize 需要設定為 false 如果沒有設定會變得太高
var trackBar = new TrackBar
{
Minimum = 10,
Maximum = 500,
Value = 100,
AutoSize = false,
TickFrequency = 10,
Width = 200,
Height = toolStrip.Height,
};
上面建立完後並沒有將 TrackBar 放入 Form 中,現在在建立 ToolStripControlHost 要直接將 TrackBar 直接放入建構子,就會把 TrackBar 塞入剛建立的 ToolStripControlHost 了。之後只要再將 ToolStripControlHost 放入 ToolStrip 就可以了。
var toolStripControlHost = new ToolStripControlHost(trackBar);
toolStrip.Items.Add(toolStripControlHost);
是不是非常簡單?想當初筆者還研究了一段時間才找到 ToolStripControlHost ,下面附上完整程式碼:
var toolStrip = new ToolStrip();
this.Controls.Add(toolStrip);
toolStrip.Dock = DockStyle.Bottom;
var trackBar = new TrackBar
{
Minimum = 10,
Maximum = 500,
Value = 100,
AutoSize = false,
TickFrequency = 10,
Width = 200,
Height = toolStrip.Height,
};
var toolStripControlHost = new ToolStripControlHost(trackBar);
toolStrip.Items.Add(toolStripControlHost);
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com