根据用户从组合框中选择的表单更新

时间:2014-10-22 04:53:09

标签: c# windows

我正在创建一个应用程序,用户必须从组合框中选择一个值。根据用户的选择,表格应填写相关标签和文本框。我如何实现这一目标?

我认为可以实现的一种方法是创建所有标签和文本框,并根据用户选择隐藏不相关的标签和文本框。但这似乎非常麻烦。有没有巧妙的方法呢?

1 个答案:

答案 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()都是私有方法,您只能将可见性设置为与选择相关的元素。这应该是全部。这是完成此任务的众多方法之一。