我有两种形式。在第一个,我有一个文本框和一个按钮,在另一个我有一个标签。当您在文本框中输入文本,然后按下按钮时,将打开一个新表单,并且该标签与上一个表单中的文本框具有相同的文本。如何使用get / set执行此操作? 我创建了一个“Globals”类,并在其中获取/设置:
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;
}
但它不起作用?我做错了什么?? 谢谢
答案 0 :(得分:3)
你正在创建两个单独的Globals
实例,首先......那些将具有自变量,这就是为什么你没有看到你刚设置的值。这就像把一栋房子涂成红色,然后看着一个完全不同的房子的颜色。
然而,使用像这样的“全局”类是一个坏主意。为什么不直接向Game
构造函数添加参数,并以这种方式传递数据?
Game igra = new Game(tbpl1.Text);
igra.Show();
听起来你可能是初学者的新手。如果是这种情况,我强烈建议您在开始编写GUI应用程序之前,了解一般中C#,.NET和OO的基础知识。 GUI有其自身的困难(例如线程规则),即使您对基础知识充满信心,也很难开发。目前,您会发现很难区分真正的GUI特定问题,而只是不了解C#和.NET如何工作。
答案 1 :(得分:1)
没有。它不起作用,因为你有两个不同的Globals实例(变量)。每个都有不同的价值观。
您需要在两种表单之间使用一个共享的Globals变量。
示例:
在Form1中创建全局变量,然后在实例化游戏时,在构造函数中传递全局引用:
Globals promenljive = new Globals();
promenljive.ime = tbpl1.Text;
Game igra = new Game(promenljive);
igra.Show();
然后,将引用存储在Game的构造函数中:
public Game(Globals g) {
this.promenljive = g; // you need a global member in Game called promenljive
}
希望它有所帮助。
答案 2 :(得分:0)
你不能在Game_Load中创建一个新的Globals,你必须将一个Globals对象的引用传递给Game的构造函数。