我需要將ToolStrip中的標準溢出函數替換爲「More ...」按鈕,然後彈出帶有溢出項目的菜單。有沒有人有關於如何做到這一點的任何想法?ToolStrip溢出
1
A
回答
2
我之前寫過一些與此類似的東西。我使用的代碼粘貼在下面,您可以自由修改它以滿足您的需求。
ToolStripCustomiseMenuItem基本上是您單擊時填充DropDown上下文菜單的「更多」按鈕。希望這可以幫助你,至少這應該是一個很好的起點...
public class ToolStripCustomiseMenuItem : ToolStripDropDownButton {
public ToolStripCustomiseMenuItem()
: base("Add Remove Buttons") {
this.Overflow = ToolStripItemOverflow.Always;
DropDown = CreateCheckImageContextMenuStrip();
}
ContextMenuStrip checkImageContextMenuStrip = new ContextMenuStrip();
internal ContextMenuStrip CreateCheckImageContextMenuStrip() {
ContextMenuStrip checkImageContextMenuStrip = new ContextMenuStrip();
checkImageContextMenuStrip.ShowCheckMargin = true;
checkImageContextMenuStrip.ShowImageMargin = true;
checkImageContextMenuStrip.Closing += new ToolStripDropDownClosingEventHandler(checkImageContextMenuStrip_Closing);
checkImageContextMenuStrip.Opening += new CancelEventHandler(checkImageContextMenuStrip_Opening);
DropDownOpening += new EventHandler(ToolStripAddRemoveMenuItem_DropDownOpening);
return checkImageContextMenuStrip;
}
void checkImageContextMenuStrip_Opening(object sender, CancelEventArgs e) {
}
void ToolStripAddRemoveMenuItem_DropDownOpening(object sender, EventArgs e) {
DropDownItems.Clear();
if (this.Owner == null) return;
foreach (ToolStripItem ti in Owner.Items) {
if (ti is ToolStripSeparator) continue;
if (ti == this) continue;
MyToolStripCheckedMenuItem itm = new MyToolStripCheckedMenuItem(ti);
itm.Checked = ti.Visible;
DropDownItems.Add(itm);
}
}
void checkImageContextMenuStrip_Closing(object sender, ToolStripDropDownClosingEventArgs e) {
if (e.CloseReason == ToolStripDropDownCloseReason.ItemClicked) {
e.Cancel = true;
}
}
}
internal class MyToolStripCheckedMenuItem : ToolStripMenuItem {
ToolStripItem tsi;
public MyToolStripCheckedMenuItem(ToolStripItem tsi)
: base(tsi.Text) {
this.tsi = tsi;
this.Image = tsi.Image;
this.CheckOnClick = true;
this.CheckState = CheckState.Checked;
CheckedChanged += new EventHandler(MyToolStripCheckedMenuItem_CheckedChanged);
}
void MyToolStripCheckedMenuItem_CheckedChanged(object sender, EventArgs e) {
tsi.Visible = this.Checked;
}
}
0
您可以捕獲按鈕上的漆事件致電
toolStrip1.OverflowButton.Paint += new PaintEventHandler(OverflowButton_Paint);
這在理論上應該讓你做它說「更多...」,但我無法設置溢出的寬度按鈕只是(窄)默認寬度。
此外,另一個想法是,您可以在OverflowButton上捕獲VisibleChanged
,然後在工具欄中手動插入拆分按鈕。棘手的部分是弄清楚該放哪個按鈕。
相關問題
- 1. js溢出函數溢出
- 2. ToolStrip LineStyles .Net
- 3. ToolStrip圓角
- 4. System.ArgumentOutOfRangeException Toolstrip菜單
- 5. ToolStrip控件MouseClick?
- 6. 在winform的ToolStrip
- 7. 緩衝區溢出(VS)緩衝區溢出(VS)堆棧溢出
- 8. 溢出
- 9. 溢出
- 10. 溢出
- 11. 溢出
- 12. 的MenuItems在ToolStrip的
- 13. toolStrip和statuStrip位置
- 14. ToolStrip覆蓋控件
- 15. ToolStrip按鈕閃爍
- 16. 緩衝區溢出不溢出
- 17. Hypertable啓動時溢出內存溢出
- 18. 在溢出的div內溢出:hidden
- 19. 溢出-y覆蓋溢出-y
- 20. CannyEdgeDetector給位圖溢出溢出
- 21. CSS溢出:強制一個div溢出
- 22. MySQL內存溢出java堆溢出
- 23. 溢出滾動已隱藏溢出
- 24. 在x64上沒有溢出溢出
- 25. 堆棧溢出堆棧溢出
- 26. basic_streambuf函數如何溢出和溢出
- 27. 溢出-y正在影響溢出-x
- 28. 整數溢出/下溢
- 29. 防止下溢和溢出
- 30. C++下溢和溢出