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

实现垂直自动隐藏工具栏的C#方法,c#,visual-studio,visual-studio-2008,.net-3.5,toolbar,C#,Visual Studio,Visual Studio 2008,.net 3.5,Toolbar,我试图创建的内容与VS2008和VS2010中的“工具箱”非常相似。它将位于我的MDI父对象的左侧,当用户将鼠标悬停在它上面时,它将弹出。同样,这就像VS工具箱一样 我的问题是,实现这一目标的最佳方式是什么?请记住,我把它放在MDI父级的左侧,并使用VS2008、C#和.NET3.5。此外,我计划在工具栏中添加一个TreeView,因此无论使用什么,都必须支持添加TreeView对象 谢谢 我在线收集并通过测试得到的垂直自动隐藏工具栏最好使用ToolStrip对象实现,在我的例子中,它停靠在左侧

我试图创建的内容与VS2008和VS2010中的“工具箱”非常相似。它将位于我的MDI父对象的左侧,当用户将鼠标悬停在它上面时,它将弹出。同样,这就像VS工具箱一样

我的问题是,实现这一目标的最佳方式是什么?请记住,我把它放在MDI父级的左侧,并使用VS2008、C#和.NET3.5。此外,我计划在工具栏中添加一个TreeView,因此无论使用什么,都必须支持添加TreeView对象


谢谢

我在线收集并通过测试得到的垂直自动隐藏工具栏最好使用ToolStrip对象实现,在我的例子中,它停靠在左侧。要显示从中弹出的TreeView对象的外观,请添加ToolStripButton。然后,向ToolStripButton添加鼠标悬停事件,使面板对象(也停靠在左侧)可见。显然,默认情况下最好使面板对象不可见。然后,为面板添加一个MouseLeave事件,这样当用户离开面板时,面板将再次变为不可见或“弹出”返回

它没有像VisualStudio2008/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;
        }
    }

请看一下SourceForge上的。我在网上看到过许多试图模仿VS工具栏的自定义控件,但没有一个能像这个一样工作。它的用户评分也很高。

@Sam:请参阅我当前解决方案的答案。如果可能的话,我想要一个慢慢弹出的解决方案。有人有这样的解决方案吗?如果你不喜欢滑入滑出,可以添加一个运行时间很短的计时器。当您使面板可见时,将其宽度(大小)设置为一个较小的值,并在每个计时器事件上,将宽度设置为稍宽一点,直到其达到完整大小。(大约100秒的间隔运行一秒钟,因此它分十步打开,每次显示最后宽度的额外十分之一看起来应该可以)非常感谢,这个库看起来很棒。我肯定会在其他项目上使用它。不幸的是,我的雇主要求我尽量少使用外部库代码,所以我必须自己实现它。