从表单传递变量,无法在其他方法中使用

时间:2015-02-12 07:01:46

标签: c# forms variables methods

这是非常容易的,但由于某些原因我遇到了问题,

public partial class confSelMenu : Form
{
    public confSelMenu(string mainChoice, string secondChoice, int segNum)
    {
        InitializeComponent();
        int circSeg = segNum;
        label2.Text = mainChoice;
        label3.Text = secondChoice;
        label4.Text = segNum.ToString();
    }

    private void button1_Click(object sender, EventArgs e)
    {

        int x1 = circSeg;  <---ERROR HERE

        switch (x1)
        {
            case 3:

                break;

            case 4:

                break;

            case 5:

                break;

            case 6:

                break;

            case 7:

                break;
       }

        wheelMenu wheelMen = new wheelMenu(x1, x2, x3);
        wheelMen.ShowDialog();
    }
}

我在 button_click1事件中收到错误,包含该行;

int x1 = circSeg

错误如下:

无法将Impile转换为类型'System.Windows.Forms.Label'到int

以下是一些背景信息:

我已将前一个表单中的3个变量传递到此一个成功,并在表单中显示为标签(名字(字符串),姓氏(字符串) ),一个数字范围从3 - 7( int )),

正如你所看到的,我在label.Text中使用它们,它们显示正常,

现在我试图在事件(按钮点击)上发生切换案例,我希望它根据他们选择的int(介于3 - 7 之间)做一些不同的事情

但由于某种原因,我从VS 2013收到此错误,有人可以帮忙吗?

非常感谢!

2 个答案:

答案 0 :(得分:1)

尝试以下。

public partial class confSelMenu : Form
{
int circSeg;
public confSelMenu(string mainChoice, string secondChoice, int segNum)
{
    InitializeComponent();

    circSeg = segNum;
    label2.Text = mainChoice;
    label3.Text = secondChoice;
    label4.Text = segNum.ToString();

}

问题是你在构造函数中定义了它,而应该将它定义为实例字段。

  
    

不能隐含转换Type&#39; System.Windows.Forms.Label&#39;进入int

  

还想指出编译错误

您似乎在名为circSeg的表单上有标签。如果是这种情况,您需要输入实例字段或标签名称。

答案 1 :(得分:1)

您的代码存在问题

您在下面的方法和

中定义了circSeg变量
public confSelMenu(string mainChoice, string secondChoice, int segNum)
{    
    int circSeg = segNum;
}

以其他方法访问它,这就是问题..如果你想访问相同的变量而不是你需要在类范围内定义那个变量而不是在方法范围内

所以你需要这样做

public partial class confSelMenu : Form
{
 private int circSeg;
  //other code
  void method1()
  {
     circSeg= value;
  }
}

在类级别范围内声明变量而不是在方法级别范围内声明非常重要的

这个与变量范围有关的基本问题,我建议你去看看变量的范围。