Windows 形成 link 两个单选按钮到包含 if-else 语句的相同方法(初学者!)

Windows Form link two radiobuttons to the same method that includes if-else statement (beginner!)

我刚开始使用 Windows 表单,有些事情我想不通。我在表单上有两个单选按钮,它们以相同的方法列出。该方法看起来像这样,它在 class 而不是 MainForm.cs:

public double CalcBMR()
{
double bmr = 0.0;
if (isFemale)
bmr = (10 * weight + 6.25 * height - 5 * age) - 161;
else
bmr = (10 * weight + 6.25 * height - 5 * age) + 5;
return bmr;
}

所以,我想做的是告诉程序 rbtnFemale.Checked = isFemale = true,并且 rbtnMale.Checked = isFemale = false,但是考虑到 isFemale 布尔值,我该怎么做必须是私有的(并且在另一个 class 中)并且我不能为每个选项编写一个不同的方法? 这是我试过但显然不起作用的方法:

private void rbtnFemale_CheckedChanged(object sender, EventArgs e)
{
bool isFemale = true;
bmrCalc.CalcBMR();
}

或者还有这个:

private void rbtnFemale_CheckedChanged(object sender, EventArgs e)
{
bool isFemale = true;
bmrCalc.CalcBMR(isFemale);
}

这当然行不通,因为 "No overload for method CalcBMR() takes 1 argument"。我不知道该怎么办。 提前谢谢你

  1. 您必须使用 public 关键字从单选按钮更改方法中声明女性变量。
  2. 您的计算方法不能接受任何参数。

So, what I want to do is telling the program that rbtnFemale.Checked = isFemale = true

然后用这个表达式代替旧的 isFemale 变量。

public double CalcBMR()
{
    double bmr = 0.0;
    if (rbtnFemale.Checked)
        bmr = (10 * weight + 6.25 * height - 5 * age) - 161;
    else
        bmr = (10 * weight + 6.25 * height - 5 * age) + 5;
    return bmr;
}

如果您不希望 CalcBMR 函数依赖于 UI 元素,请改为接受 bool isFemale

public double CalcBMR(bool isFemale)
{
    double bmr = 0.0;
    if (isFemale)
        bmr = (10 * weight + 6.25 * height - 5 * age) - 161;
    else
        bmr = (10 * weight + 6.25 * height - 5 * age) + 5;
    return bmr;
}

并用适当的参数调用它

private void rbtnFemale_CheckedChanged(object sender, EventArgs e)
{
    bmrCalc.CalcBMR(rtbnFemale.Checked);
}