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"。我不知道该怎么办。
提前谢谢你
- 您必须使用 public 关键字从单选按钮更改方法中声明女性变量。
- 您的计算方法不能接受任何参数。
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);
}
我刚开始使用 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"。我不知道该怎么办。 提前谢谢你
- 您必须使用 public 关键字从单选按钮更改方法中声明女性变量。
- 您的计算方法不能接受任何参数。
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);
}