我正在尝试创建的东西与VS 2008和VS 2010中的“工具箱”非常相似。它将位于我的MDI父级的左侧,并将弹出当用户将鼠标悬停在其上时。再次,这就像VS工具箱。C#实现垂直自动隐藏工具栏的方法
我的问题是实现这个最好的方法是什么?请记住我将它放在MDI父项的左侧,并使用VS 2008,C#和.NET 3.5。另外,我打算在工具栏中放置一个TreeView,所以无论使用什么,都必须支持添加TreeView对象。
谢谢!
我正在尝试创建的东西与VS 2008和VS 2010中的“工具箱”非常相似。它将位于我的MDI父级的左侧,并将弹出当用户将鼠标悬停在其上时。再次,这就像VS工具箱。C#实现垂直自动隐藏工具栏的方法
我的问题是实现这个最好的方法是什么?请记住我将它放在MDI父项的左侧,并使用VS 2008,C#和.NET 3.5。另外,我打算在工具栏中放置一个TreeView,所以无论使用什么,都必须支持添加TreeView对象。
谢谢!
从我在线收集和测试的垂直自动隐藏工具栏中,最好使用一个ToolStrip对象实现,在我的案例中停靠在左侧。为了给出弹出的TreeView对象的外观,添加一个ToolStripButton。然后,将一个MouseHover事件添加到ToolStripButton中,该事件使Panel对象(也停靠在左侧)可见。显然,默认情况下最好使Panel对象不可见。然后,为面板添加一个MouseLeave事件,这样当用户离开面板时,面板会再次变为不可见或“弹出”回来。
它没有像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;
}
}
如果你不想滑入和滑出,添加一个短时间运行的Timer。当您使面板可见时,将其宽度(大小)设置为较小的值,并在每个计时器事件中,将宽度设置得更宽一点,直到达到完整大小。 (类似于100秒的间隔运行一秒钟,所以它以10步打开,每次显示额外宽度的十分之一应该看起来不错) – 2012-01-14 16:59:14
@Jason:伟大的提示,非常好的主意! – CODe 2012-01-25 21:46:49
查看SourceForge上的DockPanel Suite。我在网上看到很多试图模仿VS工具栏的自定义控件,但没有一个能像这个那样工作。它的用户评价也很高。
非常感谢,这个图书馆看起来不错。我肯定会在其他项目上使用它。不幸的是,我的雇主要求我尽可能少使用外部库代码,所以我不得不自己实现它。 – CODe 2012-01-25 21:48:07
@Sam:看到我的答案为我目前的解决方案。 如果可能,我想要一个缓慢弹出的解决方案。任何人都有这样的解决方案? – CODe 2012-01-14 09:33:25