2012-07-20 145 views
1

我有一個完整的控件窗體,並沒有其他控件的空間。在窗體的底部,我有一個面板上有一些控件。動態創建控件或在側面窗體中創建控件? C#winforms

我的目標是當單擊某個按鈕時,底部的原始面板將替換爲另一個面板,該面板包含可在程序啓動前創建的控件,這意味着面板中的這些控件不需要動態創建。替換動作將通過將每個面板的可見字段設置爲匹配值來執行。

我想到了這樣做的兩種方法 - 動態創建新面板(及其控件)並將其添加到窗體而不是原始窗體,或者在另一個窗體中創建新面板,並且當相關按鈕是點擊從該表格獲取的面板並添加到所需的表格中(通過創建新表格的實例並將其修改爲公開的面板的修改器)。 「副表」的目的只是創建該面板,它沒有自己的功能。

動態創建新面板的優點:

  • 沒有必要創建一個零的功能形式。

在側面的形式創建新面板的優點:其控件添加到新的面板和它們的位置

  • 這是非常清楚的。
  • 在新面板中設置控件的位置和其他字段非常簡單。

哪種方式更好?

謝謝!

+0

有時使用像TAB等控件,結果是最好的選擇......思考這些行以及.. – 2012-07-20 10:31:15

+0

@Arif我已經有一些標籤,我想添加新的面板到選定的標籤.. – remi 2012-07-20 10:33:20

回答

1

你有沒有考慮過TabControl?這似乎很適合您的需求。我能想到的其他控件是StackPanel(可以很容易地爲Windows窗體完成)或OutlookBar控件(也是用戶控件)。

最簡單和最快捷的方式似乎是TabControl。

編輯:

  1. 側模板是一個不同的窗口形成,我想。所以如果你想要公開控制,然後改變他們的知名度等,請不要。使用委託來處理MainForm中的SideForm事件。
  2. 正如你所提到的,沒有更多的控制空間,我會建議更多的屏幕,而不是一個。話雖如此,我對你目前的UI設計和功能瞭解不多,所以這取決於你。

我會說控制隱藏,只是玩可視性很好。這意味着您不必擔心在運行時定位控件,錨定和停靠。這個問題很可能是表單的加載。擁有大量與他們相關的大量數據的控件可能會減慢速度。

+0

正如我對@Arif所說的,我已經有了一些選項卡,我想將新面板添加到選定的選項卡中。 – remi 2012-07-20 10:36:30

+0

編輯了答覆。 – danish 2012-07-20 10:43:07

+0

感謝您的回覆。 1)SideForm確實是另一種形式。我不打算改變SideForm的控件可見性,我打算從SideForm中取出面板並將其複製到MainForm,然後更改MainForm中原始面板的可見性。 2)用戶堅持在MainForm上使用該面板。我無法在MainForm中創建2個面板,因爲表單中沒有空間來製作它。 – remi 2012-07-20 10:49:09

1

IMO最好的方法是利用用戶控件來達到這個目的。只需爲每個希望顯示/隱藏的面板創建一個用戶控件,然後將控件放入其中。這樣你就可以擁有:設計師和你想要的「額外形式」。