windows - Visual Studio c #: Forsøger at sende en streng til en anden formular

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg arbejder på et skoleprojekt.
Dette er koden fra første formular, hvor jeg forsøger at sende en streng:


public void textBox1\_TextChanged(object sender, EventArgs e)
    {
        string ime=input\_Ime.Text;
        var frm1 = new Form1();
        frm1.imee = ime;
    }


'Registracija' er navnet på min første formular, og Form1 er navnet på min anden formular. Så jeg forsøger at sende 'ime' til min anden form ved navn Form1.
I Form1 fik jeg denne kode:


 public string imee { get; set; }


Plus en knap for at teste om min streng arbejder:


public void button1\_Click(object sender, EventArgs e)
    {
        MessageBox.Show(this.imee);
    }


Det virker ikke. MessageBox viser ikke noget.

Bedste reference


Almindeligt problem. Du opretter en ny forekomst af Form1, og det er dette eksempel, der modtager strengen. Form1-forekomsten, der faktisk er på skærmen, er uændret.


Du kan løse problemet med at se OpenForms kollektionen, søge efter en forekomst af Form1 og derefter, hvis den findes, send strengen til dette eksempel.


public void textBox1\_TextChanged(object sender, EventArgs e)
{
    string ime=input\_Ime.Text;
    var frm1 = Application.OpenForms.OfType<Form1>().FirstOrDefault();
    if(frm1 != null)
        frm1.imee = ime;
}

Andre referencer 1


Jeg antager, at du åbner anden form efter at nogen er udfyldt ime, så på anden form åbning skal du gøre dette:


public partial class Form1: Form
{        
    string ime;

    public Form1(string ime) //with this you are requesting `ime` when creating this form
    {
        InitializeComponent();

        this.ime = ime; //with this.ime you are referring to variable of this form, and with ime you are referring to variable from function
    }
}


Og når du åbner denne formular fra Registracija, skal du gøre dette


Form1 f1 = new Form1 (ime);

Andre referencer 2


I Registracija,


   public void textBox1\_TextChanged(object sender, EventArgs e)
        {
            string ime=input\_Ime.Text;
            Form1 frm1 = new Form1(ime);
            frm1.show();
        }


I Form1,


public Form2(string strTextBox)
{
  InitializeComponent(); 
  Messagebox.Show(strTextBox);
}