2012-01-14 29 views
3

我正在嘗試創建的東西與VS 2008和VS 2010中的「工具箱」非常相似。它將位於我的MDI父級的左側,並將彈出當用戶將鼠標懸停在其上時。再次,這就像VS工具箱。C#實現垂直自動隱藏工具欄的方法

我的問題是實現這個最好的方法是什麼?請記住我將它放在MDI父項的左側,並使用VS 2008,C#和.NET 3.5。另外,我打算在工具欄中放置一個TreeView,所以無論使用什麼,都必須支持添加TreeView對象。

謝謝!

+0

@Sam:看到我的答案爲我目前的解決方案。 如果可能,我想要一個緩慢彈出的解決方案。任何人都有這樣的解決方案? – CODe 2012-01-14 09:33:25

回答

2

從我在線收集和測試的垂直自動隱藏工具欄中,最好使用一個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; 
     } 
    } 
+2

如果你不想滑入和滑出,添加一個短時間運行的Timer。當您使面板可見時,將其寬度(大小)設置爲較小的值,並在每個計時器事件中,將寬度設置得更寬一點,直到達到完整大小。 (類似於100秒的間隔運行一秒鐘,所以它以10步打開,每次顯示額外寬度的十分之一應該看起來不錯) – 2012-01-14 16:59:14

+0

@Jason:偉大的提示,非常好的主意! – CODe 2012-01-25 21:46:49

1

查看SourceForge上的DockPanel Suite。我在網上看到很多試圖模仿VS工具欄的自定義控件,但沒有一個能像這個那樣工作。它的用戶評價也很高。

+0

非常感謝,這個圖書館看起來不錯。我肯定會在其他項目上使用它。不幸的是,我的僱主要求我儘可能少使用外部庫代碼,所以我不得不自己實現它。 – CODe 2012-01-25 21:48:07