C# 在表单之间传输数据

C# 在表单之间传输数据,c#,C#,我有两张表格。第一个是文本框和按钮,另一个是标签。当您在文本框中输入文本并按下按钮时,将打开一个新表单,并且标签的文本与上一表单中的文本框相同。我如何使用get/set实现这一点? 我制作了一个“Globals”类,其中包括get/set: class Globals { public string imena = ""; public string ime { get { return imena;

我有两张表格。第一个是文本框和按钮,另一个是标签。当您在文本框中输入文本并按下按钮时,将打开一个新表单,并且标签的文本与上一表单中的文本框相同。我如何使用get/set实现这一点? 我制作了一个“Globals”类,其中包括get/set:

class Globals
{
    public string imena = "";
    public string ime
    {
        get
        {
            return imena;
        }
        set
        {
            imena = value;
        }
    }
}
以第一种形式

private void btnplay_Click(object sender, EventArgs e)
{
    //this.Hide();
    Game igra = new Game();
    igra.Show();

    Globals promenljive = new Globals();
    promenljive.ime = tbpl1.Text;
}
第二个呢

private void Game_Load(object sender, EventArgs e)
{
    Globals promenljive = new Globals();
    lblime1.Text = promenljive.ime;
}

但它不起作用?我做错了什么?

你不能在游戏加载中创建新的全局对象,你必须将对全局对象的引用传递到游戏的构造函数中。

你不能在游戏加载中创建新的全局对象,您必须将对Globals对象的引用传递到游戏的构造函数中。

首先,您要创建两个独立的
Globals
实例。。。这些都有自变量,这就是为什么你没有看到你刚刚设定的值。这就像把一栋房子漆成红色,然后看着一栋完全不同的房子的颜色

然而,像这样使用“globals”类是个坏主意。为什么不向
游戏
构造函数添加一个参数,并以这种方式传递数据呢

Game igra = new Game(tbpl1.Text);
igra.Show();

根据您最初的方法,听起来您可能是OOP新手。如果是这种情况,我强烈建议您在开始编写GUI应用程序之前,先了解C#、.NET和OO的基本知识。GUI有其自身的困难(如线程规则),即使您对基础知识有信心,也很难开发。目前,您会发现很难区分真正的GUI特定问题与不理解C#和.NET的一般工作方式之间的区别。

首先,您创建了两个独立的
全局
实例。。。这些都有自变量,这就是为什么你没有看到你刚刚设定的值。这就像把一栋房子漆成红色,然后看着一栋完全不同的房子的颜色

然而,像这样使用“globals”类是个坏主意。为什么不向
游戏
构造函数添加一个参数,并以这种方式传递数据呢

Game igra = new Game(tbpl1.Text);
igra.Show();

根据您最初的方法,听起来您可能是OOP新手。如果是这种情况,我强烈建议您在开始编写GUI应用程序之前,先了解C#、.NET和OO的基本知识。GUI有其自身的困难(如线程规则),即使您对基础知识有信心,也很难开发。目前,您会发现很难区分真正的GUI特定问题与不理解C#和.NET的总体工作原理之间的区别。

不。这不起作用,因为您有两个不同的全局变量实例(变量)。每个都有其不同的值集

您需要在两个窗体之间使用一个共享全局变量

例如:

在Form1中创建全局变量,然后在实例化游戏时,在构造函数中传递全局引用:

Globals promenljive = new Globals();
promenljive.ime = tbpl1.Text;
Game igra = new Game(promenljive);
igra.Show();
public Game(Globals g) {
    this.promenljive = g; // you need a global member in Game called promenljive
}
然后,将引用存储在游戏的构造函数中:

Globals promenljive = new Globals();
promenljive.ime = tbpl1.Text;
Game igra = new Game(promenljive);
igra.Show();
public Game(Globals g) {
    this.promenljive = g; // you need a global member in Game called promenljive
}

希望它有帮助。

不。它不会起作用,因为您有两个不同的全局变量实例。每个都有其不同的值集

您需要在两个窗体之间使用一个共享全局变量

例如:

在Form1中创建全局变量,然后在实例化游戏时,在构造函数中传递全局引用:

Globals promenljive = new Globals();
promenljive.ime = tbpl1.Text;
Game igra = new Game(promenljive);
igra.Show();
public Game(Globals g) {
    this.promenljive = g; // you need a global member in Game called promenljive
}
然后,将引用存储在游戏的构造函数中:

Globals promenljive = new Globals();
promenljive.ime = tbpl1.Text;
Game igra = new Game(promenljive);
igra.Show();
public Game(Globals g) {
    this.promenljive = g; // you need a global member in Game called promenljive
}

希望有帮助。

请编辑您的问题,选择您的代码并在编辑器中按“代码”按钮(带101\010的)。请编辑您的问题,选择您的代码并在编辑器中按“代码”按钮(带101\010的)。我收到了,谢谢。我意识到,在这种情况下,使用Globals类,我会在没有必要的情况下将其复杂化。我是OOP的新手,今年我已经高中毕业了,从十月份开始我就要上大学了。高中时,我主要学习C和C++(但只学习MFC应用程序),所以我试图自己学习,这是通过示例和具体问题来理解它的最简单方法。谢谢!我知道了,谢谢。我意识到,在这种情况下,使用Globals类,我会在没有必要的情况下将其复杂化。我是OOP的新手,今年我已经高中毕业了,从十月份开始我就要上大学了。高中时,我主要学习C和C++(但只学习MFC应用程序),所以我试图自己学习,这是通过示例和具体问题来理解它的最简单方法。谢谢!