带有单选按钮和for循环的if-else语句

时间:2013-04-05 00:18:40

标签: c# undeclared-identifier

我遇到了一个不断发生的问题,我不确定问题是什么。我需要在Microsoft Visual studio中创建一个程序,其中radioButton1用于查找连续数字的总和,而radioButton2用于查找数字的阶乘。

将有三个按钮,一个用于FOR循环,一个用于WHILE循环,一个用于DO-WHILE循环。我正在研究FOR按钮。

我要做的是通过选择,然后按下其中一个按钮,它将使用在消息框中单击的循环找到答案。

这是我到目前为止所得到的:

private void button1_Click(object sender, System.EventArgs e)
{
  if ((radioButton1.Checked == true) && (radioButton2.Checked == false))
  {
    int sum = 0;
    int number = int.Parse(numericUpDown1.Value.ToString());
    for (int i = 1; i <= number; i++)
    {
      sum = sum + i;
      MessageBox.Show("The sum of the consecutive numbers leading up to " + number + " is " + sum + ".");
    }
    MessageBox.Show("The sum of the consecutive numbers leading up to " + number + " is " + sum + ".");
  }
  else if ((radioButton2.Checked == true) && (radioButton1.Checked == false))
  {
    int product = 1;
    int number = int.Parse(numericUpDown1.Value.ToString());
    for (int i = 1; i <= number; i++)
    {
      product *= i;
      MessageBox.Show("The factorial of the numbers leading up to " + number + " is " + product + ".");
    }
    MessageBox.Show("The factorial of the numbers leading up to " + number + " is " + product + ".");
  }
  else
  {
    MessageBox.Show("Invalid");
  }
}

我一直收到这条消息:

“'Lab5'不包含'radioButton2.CheckedChanged'的定义,并且没有扩展方法'radioButton2.CheckChanged'接受类型为'Lab5'的第一个参数'(您是否缺少using指令或程序集引用) ?)“。

我真的不知道这意味着什么。

非常感谢任何帮助。

我想将它保存在if-else语句中只是因为我不想在选择radioButton2时弹出radioButton1的消息框。

2 个答案:

答案 0 :(得分:1)

您可能无意中向该单选按钮添加了处理程序(例如,通过在设计器中双击它)然后将其删除。当解决方案正在构建时,它正在寻找该功能,但无法找到它。

检查Lab5.Designer.cs以查找radioButton2代码。它看起来像这样:

 this.radioButton1.AutoSize = true;
 this.radioButton1.Location = new System.Drawing.Point(102, 162);
 this.radioButton1.Name = "radioButton1";
 this.radioButton1.Size = new System.Drawing.Size(85, 17);
 this.radioButton1.TabIndex = 1;
 this.radioButton1.TabStop = true;
 this.radioButton1.Text = "radioButton1";
 this.radioButton1.UseVisualStyleBackColor = true;
 this.radioButton1.CheckedChanged += new System.EventHandler(this.radioButton1_CheckedChanged); /* THis is the offending line! */

最后一行是尝试添加引用不存在方法的事件处理程序。你可以在这里删除它。

此外,当程序构建时,您应该能够双击编译错误,IDE将带您到问题的根源。

答案 1 :(得分:0)

看起来像是一个功课。无论哪种方式,您都需要为事件CheckChanged的单选按钮实现处理程序。此外,如果您将这些单选按钮放在一个组中,可以检查其中任何一个,并且在checkchanged事件中,您应该填充一些functionMode或其他东西。例如,当选中RadioButton1时,你应该存储一个包含要应用哪个公式的变量,另一个应该检查你应该改变它。在按钮提交事件中,使用该变量查看当前模式并应用该公式。