2014-10-22 45 views
0

我正在製作一個應用程序,用戶必須從組合框中選擇一個值。根據用戶的選擇,表格應填入相關標籤和文本框。我如何實現這一目標?基於用戶從組合框選擇更新

我認爲這可以實現的一種方式是創建所有標籤和文本框,並根據用戶選擇隱藏不相關的標籤和文本框。但是這似乎非常麻煩。有沒有乾淨的方法可以做到這一點?

+0

第一步是嘗試。 – Prix 2014-10-22 05:00:36

+0

這個問題在一定程度上依賴於意見。它也取決於每個選擇需要顯示的內容。最好將所有可能的控件添加到表單中,然後根據需要隱藏和顯示。最好爲每個選擇設計一個用戶控件,然後將相應控件的一個實例添加到選擇的表單中。 – jmcilhinney 2014-10-22 05:02:09

+0

或者只是創建另一個表單。你也可以看一下'MDI Windows Forms',它可以派上用場。 – Leron 2014-10-22 05:11:00

回答

0

難道你只是給我帶領我從哪裏可以拿起很多 方式? @Jumpei - user2276910 8分鐘前

只要您知道,評論中的所有內容都是某種形式的主角。無論您選擇哪種方法,顯示/隱藏數據都是至關重要的。您的組合框選擇是一個私人案例。更經常的是,你需要/使用它來處理用戶訪問,所以你不可能開始構建應用程序,並且在某個時候發現你不能顯示/隱藏數據或控件。情況並非如此。事實上,由於每種方法都會給你這個選擇,爲了得到一個具體的答案,需要關於項目本身和整個體系結構的更多信息,而不僅僅是這一個特定的表單。

話雖如此,我會建議你的做法,我認爲不是最好的,但非常直觀,並在某些時候,當你感覺更有信心,你改變這一點。

所以爲了達到這個目的,創建了表單設置所有元素的默認可見性。動態添加/刪除控件並不是那麼簡單,但設置可見性選項非常簡單,所以我認爲最好使用可見性選項開始。

當您準備好表單的默認狀態時,您將需要很少的方法。首先,組合框選擇的事件處理程序應該是這樣的:

private void ComboBox1_SelectedIndexChanged(object sender, System.EventArgs e) 
{ 

    ComboBox comboBox = (ComboBox) sender; 

    string userSelection = (string)ComboBox1.SelectedItem; 

從現在開始,你應該做一些事情。首先檢查userSelection是否有效。這種檢查是必不可少的,你確定這是有效選擇你要進行後(我們仍然在SelectedIndexChanged事件)通過調用AA方法:

private void SetControlsToDefault() 
{ 

} 

此方法將包含其默認的知名度所有控件狀態。這是必需的,因爲如果我們不隱藏前一次選擇中顯示的一次,則用戶使用組合框進行多個選擇時,如果某些選擇應該隱藏,則最終會顯示可見控件。

所以一旦我們確定表單返回到初始狀態,我們需要檢查用戶選擇了什麼並顯示相關控件。

這裏有些人會建議使用switch,因爲我認爲這將使其更容易理解,我會建議if-else if語句,但你可以,如果你喜歡這樣再次在事件處理程序調用SetControlsToDefault();後更改它,我們有這樣的:

if (userSelection.Equals("selection1")) 
{ 
    ShowControlsForSelectionOne(); 
} 
else if (userSelection.Equals("selection2")) 
{ 
    ShowControlsForSelectionTwo(); 
} 
else if (userSelection.Equals("selection3")) 
{ 
    ShowControlsForSelectionThree(); 
} 

其中ShowControlsForSelectionOne()ShowControlsForSelectionTwo()ShowControlsForSelectionThree()都是私有方法,您只能將可見性設置爲與選擇相關的元素。這應該是全部。這是完成此任務的衆多方法之一。

相關問題