我正在尝试创建一个简单的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种语言开发“专业知识”!由于大学提供的资源非常少,到目前为止,我开发的唯一专业知识是搜索文档和堆栈溢出! :)
答案 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()上可见。
因为当表单加载时,所有控件都会被初始化并且状态会发生变化。