【问题标题】:Add a button to the left of a toolstrip在工具条左侧添加一个按钮
【发布时间】:2013-04-26 04:50:53
【问题描述】:

我有一个ToolStrip 对象,其中有几个ToolStripButtons。我想在这个对象的左侧添加一个垂直按钮。但由于ToolStrip 停靠在左侧,我似乎无法在其左侧添加任何内容。

有没有办法做到这一点?谢谢!

注意:我正在尝试实现类似于 Visual Studio 工具箱的功能,其中如果我将鼠标悬停在按钮上,则会显示 ToolStrip,如果我离开 ToolStrip,它将隐藏。如果有其他方法可以做到这一点,请提供帮助。

任何建议将不胜感激。

【问题讨论】:

    标签: c# winforms toolstrip


    【解决方案1】:

    希望我正确理解了您的问题,您正尝试将按钮停靠在 ToolStrip 控件的左侧,如下图所示。

    要实现这一点,您需要先将两个控件的 Dock 属性设置为 Left

    要将按钮控件作为第一个左侧停靠控件,您可以使用 Document Outline 窗口来实现此目的,该窗口使用 View > Other Windows > Document Outline打开> 菜单,然后通过拖动 ToolStrip 下方的按钮来设置停靠优先级,如上图所示。

    要支持多个按钮,您可以将上面示例中的单个按钮替换为包含所需按钮的面板。

    另外,为了避免重复造轮子,您可以查看 SourceForge 上免费提供的 DockPanel Suite 项目。

    编辑:根据评论中的要求。

    您可以将所有想要支持垂直文本的按钮链接到绘制事件,如下所示

    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);
            }
        }
    

    【讨论】:

    • @Romulus - 效果很好。有没有办法将文本更改为水平?如您所见,按钮名称的每个字母都位于前一个字母的下方。
    • 还可以看看我上面链接的 DockPanel Suite。
    • 我查看了 DockPanel Suite。我真的不想要这样一个成熟的实现。我正在寻找模仿 Visual Studio 工具箱的东西。我的表格的其余部分完全不同。
    • 我添加了一个通用的绘制事件,您可以链接到所有需要垂直文本的按钮的绘制事件。看看吧。
    猜你喜欢
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多