有条件地显示/隐藏Windows窗体元素

时间:2012-03-17 10:25:20

标签: c# .net winforms event-handling

我正在尝试创建一个简单的Windows窗体应用程序,它将根据前面元素的值显示不同的选项 - 例如,我在窗体顶部有四个单选按钮,每个按钮将显示和隐藏元素各种其他元素在表单中 - 基本上在一个表单中形成多个表单。

我在一个大的条件语句中设置了这个(这只是一小部分,但它完全相似):

private void Payment_Load(object sender, EventArgs e)
  {
            if (rdoMultChoice.Checked)
            {

                lblGroupBox1_MC.Visible = true;
                lblGroupBox1_FITB.Visible = false;
                lblGroupBox1_TF.Visible = false; 
             // etc...
            }
            else if (rdoFillInBlank.Checked)
            {
                lblGroupBox1_MC.Visible = false;
                lblGroupBox1_FITB.Visible = true;
                lblGroupBox1_TF.Visible = false;
             // etc...
            }

问题是,当我运行应用程序时,表单完全忽略了这些语句,似乎只是让我的所有元素都可见。

http://msdn.microsoft.com/en-us/library/754w18dd.aspx

此链接有点类似于我的需求。我试图使它适应我的情况,但它似乎没有工作(不能保证我做得正确...)。

看起来这应该是一件非常简单的事情,但我是C#的新手并且本周才开始使用它 - 一个CS类的作业。为了咆哮,我们期望在15周内以13种语言开发“专业知识”!由于大学提供的资源非常少,到目前为止,我开发的唯一专业知识是搜索文档和堆栈溢出! :)

3 个答案:

答案 0 :(得分:3)

我要做的第一件事就是在你的代码中添加一个断点:

private void Payment_Load(object sender, EventArgs e)
{
   if (rdoMultChoice.Checked)  // <-- Put breakpoint here.

您想知道是否正在执行Payment_Load

接下来,在您确定它正在执行之后,检查您的代码以查看是否有任何可能改变标签可见性的内容。它可能是另一段改变.Visible设置的代码。

答案 1 :(得分:1)

您可能需要为控件添加一个侦听器。 像这样:

rdoMultChoise.CheckedChanged += Payment_Load;

答案 2 :(得分:1)

最初将您的所有控件可见属性设置为false,并再次使它们在Form_Load()上可见。

因为当表单加载时,所有控件都会被初始化并且状态会发生变化。