在Windows表单

时间:2016-10-30 20:15:31

标签: c# forms visual-studio

我正在开展一个项目,我希望在表单之间发送值,但是我遇到了问题。

表格1:

public Vägval(string name, string gender, int gold)
        {


            InitializeComponent();
            ChoosePicture(gender);
            tname.Text = name;
            string Namn = name;
            string Gender = gender;
            int Gold = gold;
            tMynt.Text = gold.ToString();
            tLife.Text = 5.ToString();
            Skattkista skatt = new Skattkista(Namn, Gender, Gold);


        }

点击图片后,我想打开第二张表格并发送三个值:姓名,性别和黄金。

 private void pictureBox1_Click(object sender, EventArgs e)
        {
            Skattkista skatt = new Skattkista(Namn, Gender, Gold);
            skatt.Show();
        }

但我在这里得到错误:

  

当前上下文中不存在名称“Namn”

     

当前上下文中不存在名称“性别”

     

当前上下文中不存在“Gold'does”这个名称

我尝试将Skattkista skatt = new Skattkista(Namn, Gender, Gold);放在构造函数上,但是当单击图片时我无法打开表单。

我想要的只是打开一个新表格,并在点击图片时用它发送三个值

1 个答案:

答案 0 :(得分:2)

看起来您的变量可能具有您创建它们的方法的局部范围,而不是表单本身的全局范围。没有更多代码,我无法分辨。一个建议是尝试给每个表单全局属性

public string Namn {get; set;}
public string Gender {get; set;}
public int Gold {get; set;}

您的构造函数应该如下所示

public Vägval(string name, string gender, int gold)
    {
        InitializeComponent();
        ChoosePicture(gender);

        //assigns all the properties
        this.Namn = name;
        this.Gender = gender;
        this.Gold = gold;

        //Set GUI 
        tname.Text = name;
        tMynt.Text = gold.ToString();
        tLife.Text = 5.ToString();
    }

Click事件

 private void pictureBox1_Click(object sender, EventArgs e)
    {
        //Create new form object using Vagval properties and show it
        Skattkista skatt = new Skattkista(this.Namn, this.Gender, this.Gold);
        skatt.Show();
    }