2

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

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

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

任何建议将不胜感激。

4

1 回答 1

4

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

在此处输入图像描述

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

要将按钮控件作为第一个左侧停靠控件,您可以使用“文档大纲”窗口来实现此目的,该窗口使用“视图”>“其他窗口”>“文档大纲”菜单打开,然后通过拖动 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);
        }
    }
于 2013-04-26T05:22:31.993 回答