c# - 在工具条左侧添加一个按钮

标签 c# winforms toolstrip

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

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

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

如有任何建议,我们将不胜感激。

最佳答案

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

enter image description here

要实现此目的,您需要首先将两个控件的 Dock 属性设置为 Left

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

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

另外为了避免重复发明轮子,你可以看看DockPanel Suite该项目可在 SourceForge 上免费获得。

编辑:按照评论中的要求。

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

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

关于c# - 在工具条左侧添加一个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16228986/

相关文章:

c# - asp.net 异步执行任务并更新 UI

c# - 无法编辑填充有 LINQ 查询结果的 DataGridView

wpf - ToolStripButton 是否有 WPF 等效项?

c# - 更改 Windows 7 窗口颜色

c# - 如何有效地从数据存储加载对象模型?

c# - 尝试显示 ListView 中的默认选定值

c# - 以线程安全的方式设置 ToolStripLabel

.net - 为什么too​​lstriplabel 的backcolor 属性在设计时或运行时不会改变?

c# - 如何从此 URL 获取文件内容?

vb.net - 传递给子组件的可选表单名称参数