2013-03-04 48 views
0

有人可以提出實現我的目標的最佳方式嗎?C#WinForms以編程方式添加控件

所以,我有一個三個按鈕的形式。我想要的是,取決於在面板上按下哪個按鈕應該顯示不同的控件(用戶控件)。我以一種簡單的方式做到了這一點:所有內容都是從一開始就添加的,我只是對可見性做出了改變。但是,如果有人能夠提出一種更合適的方式,那麼最好不過,因爲不需要從頭開始創建對象。

+0

嘗試使用'ASP:UpdatePanel':HTTP://ajax.net-tutorials .com/controls/updatepanel-control/ – markzzz 2013-03-04 16:36:55

+7

@markzzz對於Windows Forms? – 2013-03-04 16:37:09

+1

你試過了什麼?你真的應該發佈你的代碼;沒有看到你已經做了什麼,很難提出修改建議。 – Brian 2013-03-04 16:37:24

回答

7

您可以隨時創建相應的UserControl,並在運行時將其添加到Panel.Controls。這將允許您根據需要創建控件,而不是初始化表單。

+0

這當然是可能的,但是我建議就更難設計和更復雜些。最好讓他們都在那裏,並根據輸入簡單地顯示/隱藏。 – Liath 2013-03-04 16:40:59

+1

@Lath這真的取決於 - 如果用戶控件有很長的初始化,先創建3就可以創建UI打嗝。有時懶惰加載是非常合適的 - 但它確實取決於場景。 – 2013-03-04 16:41:45

+0

@Lath這是一個非常糟糕的想法,因爲控件在設計時會彼此重疊,並且每個控件都會加載到內存中,而這些內容不需要。 – 2013-03-04 16:43:16

0

我確實會在設計時創建控件 - 如果沒有動態創建它們的優勢。爲什麼複雜的事情?

如果有多個控件,我會把他們都在(面板中你已經提到)面板所以你只能改變單一控制(面板)的可見性,而不是每一個內它。

當你按下相應的按鈕顯示相應的面板(記住隱藏您以前顯示他們的情況下,其他人)

+1

我同意 - 除非控件有很長的初始化時間,在這種情況下,創建3可能比必要的慢(即:創建UI呃逆) – 2013-03-04 16:40:54

相關問題