使用VS Designer,我创建了一个窗口(Form1),其中只有几个radiobuttons。在另一个类中,我尝试创建一个在检查radiobutton时执行的语句。
public static string printRailType()
{
if (Form1.rb60E1.Checked)
{
return "60E1";
}
else if (Form1.rb49E1.Checked)
{
return "49E1";
}
else
{
return "Rail type not selected.";
}
但是,我遇到了问题,这显示为错误:
非静态字段,方法或属性'RailCalc.Form1.rb60E1'需要对象引用 对于Form1.rb49E1也是如此。
因此,为了解决这些错误,我创建了一个Form1实例:
public static string printRailType()
{
Form1 frm1 = new Form1();
if (frm1.rb60E1.Checked)
{
return "60E1";
}
else if (frm1.rb49E1.Checked)
{
return "49E1";
}
else
{
return "Rail type not selected.";
}
}
但是,即使选择了一个单选按钮,它仍然会打印出未选择的铁轨类型。
似乎frm1是Form1类的一个实例,但是它被创建并重置(没有选择radiobuttons)。
如何解决此问题?
答案 0 :(得分:1)
它以另一种方式工作,关键字是事件,在您的情况下是CheckedChanged。
所以你必须处理它并将代码放在处理程序中:
if (this.rb60E1.Checked)
{
return "60E1";
}
else if (this.rb49E1.Checked)
{
return "49E1";
}
else
{
return "Rail type not selected.";
}
答案 1 :(得分:-1)
这是因为您修复错误所使用的新Form1是一个全新的表单,而不是单击radiobuttons的表单。你必须在某个地方为类提供Form1的引用,并且可能在你创建类的地方。