C#radiobutton值(布尔值)到另一个类
我试图让用户选择的值以单选按钮的形式发送给另一个进行计算的类 在MainForm.cs中,我有:C#radiobutton值(布尔值)到另一个类,c#,radio-button,boolean,C#,Radio Button,Boolean,我试图让用户选择的值以单选按钮的形式发送给另一个进行计算的类 在MainForm.cs中,我有: private bool ReadInputBMR() { bla bla bla... if (rbtnFemale.Checked) ; { calCalc.SetGender(2); } if (rbtnMale.Checked) ; { calCalc.SetGender(1); } bla bla }
private bool ReadInputBMR()
{ bla bla bla...
if (rbtnFemale.Checked) ;
{ calCalc.SetGender(2); }
if (rbtnMale.Checked) ;
{ calCalc.SetGender(1); }
bla bla
}
在进行计算的类中,我有这样一个:类名是:caloricalculator.cs
public void SetGender(int value)
{
if (value > 2)
{ this.isFemale = false; }
else if (value == 2)
{ this.isFemale = true; }
}
public bool GetGender()
{
if (isFemale == true)
{
return isFemale == true;
}
else if (isFemale == false)
{
return isFemale == false;
}
}
public double CalcBasMetabolicRateBMR()
{
BMR = (10 * weight) + (6.25 * height) - (5 * age);
BMRFemale = BMR - 161;
BMRMale = BMR + 5;
if (isFemale == true)
return BMRFemale;
else
return BMRMale;
}
我敢肯定我在什么地方(或任何地方)搞砸了。其他值似乎起作用了,只是单选按钮中的值不起作用
感谢您的帮助您的代码应该是这样的
if (rbtnFemale.Checked==true)
{
calCalc.SetGender(2);
}
else if (rbtnMale.Checked==true)
{
calCalc.SetGender(1);
}
可能存在的问题是,使用值1调用SetGender(),而实现不会执行任何操作,因为它会检查>=2和==2 顺便说一句,为什么不通过更改以下内容使实施更容易(和平等):
public void SetGender(int value)
{
if (value > 2)
{ this.isFemale = false; }
else if (value == 2)
{ this.isFemale = true; }
}
到
改变
public bool GetGender()
{
if (isFemale == true)
{
return isFemale == true;
}
else if (isFemale == false)
{
return isFemale == false;
}
}
if (isFemale == true)
return BMRFemale;
else
return BMRMale;
到
改变
public bool GetGender()
{
if (isFemale == true)
{
return isFemale == true;
}
else if (isFemale == false)
{
return isFemale == false;
}
}
if (isFemale == true)
return BMRFemale;
else
return BMRMale;
到
一般来说,对枚举类型使用1、2等值不是一个好主意
最好是使用:
公共enum EGender{未知,男性,女性}
这将使您的代码更加清晰。如果不需要未知值,可以直接使用布尔值(如IsFemale),而不需要1和2值
还考虑属性,如公共EngEngEng{{Get;set;},而不是单独的get和set方法。
什么是不能工作的?你的课也是公开的吗?如果radiobutton的选中值已签出,是否已使用droppoint进行检查?如果选中rbtnMale单选按钮且SetGender参数为1,则它与方法中的任何条件都不匹配,因此this.isFemale的值保持空值。无论选择的是男还是女,我都会得到相同的结果return isFemale ? BMRFemale : BMRMale;