[英]Transferring data between forms
我有兩種形式。 在第一個中,我有一個文本框和一個按鈕,在另一個中,我有一個標簽。 當您在文本框中輸入文本並按下按鈕時,將打開一個新表單,並且標簽的文本與上一個表單中的文本框相同。 我該如何使用獲取/設置? 我制作了一個“ 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;
}
但這行不通嗎? 我做錯了什么?
好吧,您要創建兩個單獨的Globals
實例,以……開始。這些實例將具有獨立變量,這就是為什么您看不到剛剛設置的值的原因。 就像將一所房子塗成紅色,然后看一所完全不同的房子的顏色一樣。
但是,使用這樣的“ globals”類是一個壞主意。 為什么不只是向Game
構造函數添加一個參數,然后以這種方式傳遞數據呢?
Game igra = new Game(tbpl1.Text);
igra.Show();
聽起來像您剛開始使用OOP可能是新手。 如果是這種情況,我強烈建議您在開始編寫GUI應用程序之前先全面了解C#、. NET和OO的基礎知識。 GUI有其自身的困難(例如線程規則),即使您對基本知識很有信心,也很難進行開發。 目前,您將很難分辨出真正針對GUI的問題與根本不了解C#和.NET的一般工作之間的區別。
不會。因為您有兩個不同的Global實例(變量),所以它不起作用。 每個都有其不同的值集。
您需要在兩種形式之間使用一個共享的Globals變量。
例:
在Form1中創建全局變量,然后在實例化Game時 ,在構造函數中傳遞全局引用:
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
}
希望能幫助到你。
您不能在Game_Load中創建新的Globals,必須將對Globals對象的引用傳遞到Game的構造函數中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.