我有一个ToolStrip
个对象,其中有一些ToolStripButtons
。我想在这个对象的左侧添加一个垂直按钮。但由于ToolStrip
停靠在左侧,我似乎无法在其左侧添加任何内容。
有没有办法可以做到这一点?谢谢!
注意:我正在尝试实现与Visual Studio工具箱类似的功能,如果我将鼠标悬停在按钮上,则会显示ToolStrip
,如果我将ToolStrip
隐藏起来。如果有其他方法可以帮助您。
非常感谢任何建议。
答案 0 :(得分:4)
希望我能正确理解您的问题,您正试图将按钮停靠在ToolStrip控件的左侧,如下图所示。
要实现此目的,您需要先将两个控件的 Dock 属性设置为Left
要将按钮控件作为第一个左对接控件,可以使用视图>打开的文档大纲窗口来实现。其他Windows>文档大纲菜单,然后通过拖动ToolStrip下方的按钮设置基座优先级,如上图所示。
要支持多个按钮,您可以使用包含所需按钮的面板替换上面示例中的单个按钮。
另外,为了避免重新发明轮子,您可以查看SourceForge上免费提供的DockPanel Suite项目。
编辑:根据评论的要求。
您可以将要支持垂直文本的所有按钮链接到paint事件,如下所示
private void VerticalButtonTextEvent(object sender, PaintEventArgs e)
{
Button button = sender as Button;
if (button == null) return;
Graphics g = e.Graphics;
g.FillRectangle(SystemBrushes.Control, button.ClientRectangle);
using (Font f = new Font("Times New Roman", 8))
{
SizeF szF = g.MeasureString(button.Text, f);
g.TranslateTransform(
(float) ((Button) sender).ClientRectangle.Width/(float) 2 + szF.Height/(float) 2,
(float) ((Button) sender).ClientRectangle.Height/(float) 2 -
(float) szF.Width/(float) 2);
g.RotateTransform(90);
g.DrawString(button.Text, f, Brushes.Black, 0, 0);
}
}