2010-07-02 46 views
0

這是一個愚蠢的問題?我正在嘗試導航C#Visual Studio的神祕世界。我希望能夠在運行時的某個時間點替換面板,但設計器視圖只具有表單單一狀態的靜態視圖。如何在Visual Studio中使用設計器視圖來設計表單的多個狀態?

例如,窗體上可能有panel1,button1和picturebox1。然後,如果用戶按下按鈕1,panel1將被替換爲panel2。 Panel2有button2和picturebox2。

我知道如何讓設計師的panel1很好。有沒有什麼方法可以讓設計師使用panel2?您是否只能使用設計器來創建表單的一個狀態,然後您必須手動執行其他任何狀態?

回答

1

我不知道任何方法來顯示設計器中的表單的不同狀態。不過聽起來好像你想做的是兩個不同的用戶控件。我建議你創建一個可以在代碼中的兩個用戶控件之間切換的表單。 這不完全是你要求的,但至少現在你不需要在設計者之外編寫不同的面板。 這是你需要做什麼:

  1. ,你設計你的意見不同的佈局UserControlPanel1和UserControlPanel2。
  2. PanelLoaderForm您可以在其中爲加載不同的用戶控件留出空間。根據您的需要,您可以實現代碼以顯示不同的用戶控件。

這是VB.NET,但在你的PanelLoaderForm的代碼可能是這個樣子:

Private Sub LoadUserControl() 
    If UsePanel1 Then 
     Controls.Add(new UserControlPanel1())   
    Else 
     Controls.Add(new UserControlPanel2())   
    End If 
End Sub 

然後如果你想添加的前兩個呼叫Controls.Remove(oldControl)或東西之間轉移新的那一個。

+0

對不起,「兩個用戶控件之間的轉換」是什麼意思? – lala 2010-07-02 10:12:49

+0

我編輯了我的答案,希望能夠澄清我的意思。如果需要詳細說明,請回來。 – MikaelHalen 2010-07-02 11:49:12

1

我沒有專門使用C#表單設計器,但通常您會設計表單的初始狀態,並在代碼中執行其餘(所有動態更改)。現在,可以將panel2放在窗體上,使其不可見,並且在button1被按下時切換面板的可見性,但很可能這不是一個好的解決方案。

+0

確切地說,因爲它會產生很大的表單開銷。特別是如果你有很多控件 – KroaX 2010-07-02 06:48:33

相關問題