2012-06-27 56 views
0

我正在創建一個GUI,我想要一個基於樹視圖中的哪個項目或單選按鈕上的哪個項目進行更改的應用程序。用樹形視圖或單選按鈕修改Windows窗體

我知道如何知道哪個項目被選中,但是如何根據項目更改界面?

我該怎麼辦?多個面板?有些隱藏?

想象一下應用程序和MMC一樣,右側會根據我在右側選擇的內容進行更改。

我在事件中使用了類似Button1.Visible = trueButton2.Visible = false的東西,但是如何將元素分組在右側? 在設計師模式中,我會看到每個物體與其他物體重疊?

+0

我會對內容窗格中單面板。然後創建兩個用戶控件,在選擇某個項目時創建一個新的實例,並處理當前項目(如果面板中有一個),並將新項目添加到面板。 –

回答

1

假設你指的是類似於菜單的東西(左側的菜單選項;單擊時,窗口的右側填充相應的設置),只需爲每個「窗口」創建一個單獨的控件, (非技術性使用該詞)的權利。當選擇左側的條目時,通過在右側面板的相應控件上調用BringToFront()來處理Click事件。

如果您不是指菜單,而是指更細微的東西(左側的每個選區都在相同的中央顯示單元上操作,並且每個選區可能隻影響一小部分) ,然後將中央顯示單元劃分爲面板,每個單元可能會受到左側選擇的影響,並根據左側選擇顯示和隱藏它們。

+0

謝謝。它看起來像我所需要的。我如何創建這個控件?在工具箱中,我沒有看到它們http://img805.imageshack.us/img805/3255/controlh.png。 –

+0

它們實質上是新添加到您的項目中的代碼單元。 「控制」既可以指形式的原子(按鈕,組框等),也可以指較大的組合體(如按鈕+組合框,或垂直組織的五個文本框)。一旦你創建了這些控件之一(例如,通過解決方案資源管理器中的「添加新控件」),並且一旦構建了該控件,就可以將其添加到表單中,方法與添加任何其他.NET提供的控件。 –

0

處理這個問題的常用方法是在屏幕的右側有一個面板,並且每個不同的視圖都有自己的UserControl創建。然後,當樹視圖選擇更改時,清除面板的子項,創建相關的UserControl實例,將其添加到面板,並將其Dock設置爲Fill。類似下面的僞代碼:

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 
    { 
     panel1.Controls.Clear(); 
     UserControl uc = new MyUserControl(); 
     uc.DataToShow = (MyObject)treeView1.SelectedNode.Tag; 
     uc.Dock = DockStyle.Fill; 
     panel1.Controls.Add(uc); 
    } 
+0

使用類似標籤的東西怎麼樣?這是不可能的設計師,可行嗎? –

+0

你可以在設計師那裏做,但有兩個主要問題。首先,大多數人這樣做,然後想要隱藏除當前標籤之外的所有標籤。 WinForms並沒有做到這一點(儘管你可以將它搞糊塗)。其次,如果你有很多選項卡,它們都會在你的程序啓動時被創建,從而減慢它的速度。 – Michael