【问题标题】:Conditionally Show/Hide Windows Form Elements有条件地显示/隐藏 Windows 窗体元素
【发布时间】:2012-03-17 10:25:20
【问题描述】:

我正在尝试制作一个简单的 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 种语言的“专业知识”!由于大学提供的资源很少,到目前为止,我开发的唯一专业知识是搜索文档和堆栈溢出! :)

【问题讨论】:

    标签: c# .net winforms event-handling


    【解决方案1】:

    我要做的第一件事是在您的代码中放置一个断点:

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

    你想知道Payment_Load是否正在被执行。

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

    【讨论】:

    • 是的,这是最可能的解释。 Payment.Load 事件实际上并没有连接到您的处理程序。这不会像在 VB.NET 中那样在 C# 中自动发生。
    • 看来这很可能是问题所在,您能解释一下链接事件和侦听器的最佳方式吗?我应该在付款负载中还是在我的 main() 中执行此操作?
    • @user:在 Payment 表单的 constructor 中执行此操作。这就是带有签名Payment() 的方法。现在,它可能只包含一行代码:对InitializeComponent 方法的调用。
    • 谢谢,感谢您的帮助。
    【解决方案2】:

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

    rdoMultChoise.CheckedChanged += Payment_Load;
    

    【讨论】:

      【解决方案3】:

      首先将所有控件的Visible 属性设置为false,然后再次使它们在Form_Load() 上可见。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-11
        • 2021-03-09
        • 1970-01-01
        • 2013-07-03
        • 1970-01-01
        相关资源
        最近更新 更多