簡體   English   中英

在表單之間傳輸數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM