我正在製作一個應用程序,用戶必須從組合框中選擇一個值。根據用戶的選擇,表格應填入相關標籤和文本框。我如何實現這一目標?基於用戶從組合框選擇更新
我認爲這可以實現的一種方式是創建所有標籤和文本框,並根據用戶選擇隱藏不相關的標籤和文本框。但是這似乎非常麻煩。有沒有乾淨的方法可以做到這一點?
我正在製作一個應用程序,用戶必須從組合框中選擇一個值。根據用戶的選擇,表格應填入相關標籤和文本框。我如何實現這一目標?基於用戶從組合框選擇更新
我認爲這可以實現的一種方式是創建所有標籤和文本框,並根據用戶選擇隱藏不相關的標籤和文本框。但是這似乎非常麻煩。有沒有乾淨的方法可以做到這一點?
難道你只是給我帶領我從哪裏可以拿起很多 方式? @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()
都是私有方法,您只能將可見性設置爲與選擇相關的元素。這應該是全部。這是完成此任務的衆多方法之一。
第一步是嘗試。 – Prix 2014-10-22 05:00:36
這個問題在一定程度上依賴於意見。它也取決於每個選擇需要顯示的內容。最好將所有可能的控件添加到表單中,然後根據需要隱藏和顯示。最好爲每個選擇設計一個用戶控件,然後將相應控件的一個實例添加到選擇的表單中。 – jmcilhinney 2014-10-22 05:02:09
或者只是創建另一個表單。你也可以看一下'MDI Windows Forms',它可以派上用場。 – Leron 2014-10-22 05:11:00