使用单选按钮。检查另一个类(静态/非静态的问题)

时间:2014-03-01 16:00:42

标签: c# winforms

使用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)。

如何解决此问题?

2 个答案:

答案 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的引用,并且可能在你创建类的地方。