Windows窗体将两个单选按钮链接到包含if-else语句的相同方法(初学者!)

本文关键字:语句 if-else 初学者 方法 包含 链接 窗体 两个 Windows 单选按钮 | 更新日期: 2023-09-27 18:19:21

我刚开始用Windows Form工作,有一些我不能弄清楚。我在表单上有两个单选按钮,它们被列为相同的方法。该方法看起来像这样,并且它在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 bool必须是私有的(并且在另一个类中)并且我不能为每个选项编写一个不同的方法,我该如何做到这一点?这是我尝试过的,但显然它不起作用:

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);
}

这当然不工作,因为"没有重载方法CalcBMR()接受1个参数"。我不知道该怎么办。提前谢谢大家

Windows窗体将两个单选按钮链接到包含if-else语句的相同方法(初学者!)

我要做的是告诉程序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);
}
    你必须用public关键字在单选按钮更改方法中声明女性变量。
  1. 您的计算方法不能接受任何参数。