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

相关问题