C# 已从窗体传递变量,无法在其他方法中使用

C# 已从窗体传递变量,无法在其他方法中使用,c#,forms,variables,methods,C#,Forms,Variables,Methods,对,这应该是非常容易的事情,尽管出于某种原因我遇到了问题 public partial class confSelMenu : Form { public confSelMenu(string mainChoice, string secondChoice, int segNum) { InitializeComponent(); int circSeg = segNum; label2.Text = mainChoice;

对,这应该是非常容易的事情,尽管出于某种原因我遇到了问题

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();
    }
}
public分部类confSelMenu:表单
{
公共confSelMenu(字符串主选项、字符串第二选项、int segNum)
{
初始化组件();
int circSeg=segNum;
label2.Text=main选项;
label3.Text=第二选择;
label4.Text=segNum.ToString();
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
int x1=circSeg;试试下面的方法

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();

}
问题是您已经在构造函数中定义了它,而应该将其定义为实例字段

无法将类型“System.Windows.Forms.Label”隐式转换为int

还想指出编译错误

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

您的代码有问题

您在下面的方法中定义了
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;
  }
}
在类级范围而不是方法级范围内声明变量,这一点非常重要


这个非常基本的问题与变量的作用域有关,我建议您去阅读变量的作用域。

如果我可以将变量“segNum”直接放入开关盒中,我会更愿意,但如果我这样做,则会出现错误“名称segNum在当前上下文中不存在”,没有办法让它全球化吗?circSeg是在哪里定义的?伙计,你很惊讶你知道我到底想做什么,注意:),我完全忘了我已经更改了标签的名称(在Designer视图中)但是它不是硬编码的,这就是为什么我会出现这个错误,非常感谢^ ^我对变量的范围有一些了解,虽然这不是我在这里遇到的真正问题,但我更困惑于“无法隐式转换类型”System.Windows.Forms.Label“为int”的错误,但我最终找到了解决办法:)很多thanks@TaoNinja欢迎…它发生了只是我的建议不要把它当回事…注意,我总是乐于接受建议:)快乐编码^_^