在Windows窗体之间发送值

本文关键字:之间 Windows 窗体 | 更新日期: 2023-09-27 18:15:46

我正在做一个项目,我想在表单之间发送值,但是我遇到了一个问题。

形式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"在当前上下文中不存在

名称"Gender"在当前上下文中不存在

名称'Gold'在当前上下文中不存在

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

我所要做的就是打开一个新表单,并在点击图片时发送三个值

在Windows窗体之间发送值

看起来,您的变量可能具有您在其中创建它们的方法的局部作用域,而不是表单本身的全局作用域。没有更多的代码我无法判断。一个建议是尝试给每个表单全局属性

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

点击事件

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