C#实现垂直自动隐藏工具栏的方法

3
我试图创建的东西与VS 2008和VS 2010中的“工具箱”非常相似。它将在我的MDI父窗口的左侧,并且当用户将鼠标悬停在其上时,它将弹出。这与VS工具箱完全相同。
我的问题是最佳实现方式是什么?请记住,我将它放置在MDI父窗口的左侧,使用的是VS 2008,C#和.NET 3.5。此外,我计划在工具栏内放置一个TreeView,因此所使用的任何内容都必须支持添加TreeView对象。
谢谢!

@Sam:请看我的回答,了解我目前的解决方案。 如果可能的话,我希望有一个慢慢弹出的解决方案。有人有这样的解决方案吗? - CODe
2个回答

2
一个垂直自动隐藏的工具栏,从我在网上查到和测试中了解到,最好使用ToolStrip对象来实现,在我的情况下停靠在左侧。为了让它看起来像是一个TreeView对象弹出来的,请添加一个ToolStripButton。然后,为ToolStripButton添加一个MouseHover事件,使一个Panel对象(也停靠在左侧)可见。显然,默认情况下最好将Panel对象设置为不可见。接下来,为Panel添加一个MouseLeave事件,这样当用户离开Panel时,Panel就会再次变为不可见或者“弹回去”。
它没有Visual Studio 2008/2010那样漂亮的弹出效果,但它具有我需要的基本功能。
以下是MouseHover和MouseLeave事件的代码。非常简单。
    private void openPanel1ToolStripButton_MouseHover(object sender, EventArgs e)
    {
        if(panel1.Visible == false)
        {
            panel1.Visible = true;
        }
    }

    private void panel1_MouseLeave(object sender, EventArgs e)
    {
        if (panel2.Visible == true)
        {
            panel2.Visible = false;
        }
    }

2
如果你想让它滑入和滑出,请添加一个运行一段时间的计时器。当你使面板可见时,将其宽度(大小)设置为一个小值,并在每个计时器事件上,将宽度逐渐增加直到达到完整尺寸。(类似于100cs间隔运行一秒钟,因此它分十步打开,每次显示最终宽度的十分之一应该看起来不错) - Jason Williams

1

请在 SourceForge 上查看 DockPanel Suite。我已经看到很多网站上尝试模仿 VS 工具栏的自定义控件,但是没有一个像这个控件一样好用。它还拥有很高的用户评价。


非常感谢,这个库看起来很棒。我一定会在其他项目中使用它。不幸的是,我的雇主要求我尽可能少地使用外部库代码,所以我必须自己实现它。 - CODe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接