我正在创建一个应用程序,用户必须从组合框中选择一个值。根据用户的选择,表格应填写相关标签和文本框。我如何实现这一目标?
我认为可以实现的一种方法是创建所有标签和文本框,并根据用户选择隐藏不相关的标签和文本框。但这似乎非常麻烦。有没有巧妙的方法呢?
答案 0 :(得分:0)
你能不能给我带领我从哪里领到很多人 方法? @Jumpei - user2276910 8分钟前
您知道吗,评论中的所有内容都是某种形式的。无论您选择哪种方法,显示/隐藏数据都是必不可少的。您的组合框选择是一个私人案例。更常见的是,您需要/使用它来处理用户访问权限,因此您无法开始构建应用程序,并且在某些时候发现您无法显示/隐藏数据或控件。事实并非如此。事实上,由于每种方法都会为您提供选择,因此要获得具体答案,需要有关项目本身和整体架构的更多信息,而不仅仅是这一种特定形式。
话虽如此,我会建议你采用我认为不是最好的方法,但非常直观,并且在某些时候你更有信心改变它。
因此,为了实现此目的,请创建表单,为所有元素设置默认可见性。动态添加/删除控件并非易事,但设置可见性选项非常简单,所以我认为最好先使用可见性选项。
当您准备好表单的默认状态时,您将需要很少的方法。首先,组合框选择的事件处理程序应该是这样的:
private void ComboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
ComboBox comboBox = (ComboBox) sender;
string userSelection = (string)ComboBox1.SelectedItem;
从现在开始,你应该做一些事情。首先检查userSelection
是否有效。这项检查是必不可少的,在您确定这是有效的选择后,您将通过调用方法继续(我们仍处于SelectedIndexChanged
事件中):
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()
都是私有方法,您只能将可见性设置为与选择相关的元素。这应该是全部。这是完成此任务的众多方法之一。