2017-01-21 2 views
0

Я работаю над школьным проектом. Это код из первой формы, из которых я пытаюсь отправить строку:Visual Studio C#: попытка отправить строку в другую форму

public void textBox1_TextChanged(object sender, EventArgs e) 
    { 
     string ime=input_Ime.Text; 
     var frm1 = new Form1(); 
     frm1.imee = ime; 
    } 

«Registracija» это имя моей первой формы, а Form1 это имя моей второй формы. Поэтому я пытаюсь отправить «ime» в свою вторую форму с именем Form1. В Form1 я получил этот код:

public string imee { get; set; } 

Plus кнопку, чтобы проверить, если моя строка работает:

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

Это не работает. MessageBox ничего не показывает.

+0

Где вы показываете 'Form1'? – David

+0

Возможно, вы используете другой экземпляр 'Form1', а не тот же экземпляр. – CodingYoshi

+0

@ Давид, я покажу свою форму1 позже. –

ответ

0

Обычная проблема. Вы создаете новый экземпляр Form1, и именно этот экземпляр получает строку. Экземпляр Form1 на самом деле не изменяется.

Вы можете исправить проблему, рассматривая коллекцию OpenForms, найти экземпляр Form1, а затем, если найден, передать строку этому экземпляру.

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; 
} 
0

Я предполагаю, что вы открываете вторую форму после того, как кто-то заполнил ime, так и на второе отверстие формы вам нужно сделать, это:

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 
    } 
} 

И когда вы открываете эту форму от Registracija вам нужно сделать это

Form1 f1 = new Form1 (ime);

+0

Это не проблема OP. Это другой способ сделать это. – CodingYoshi

-1

В Registracija,

public void textBox1_TextChanged(object sender, EventArgs e) 
     { 
      string ime=input_Ime.Text; 
      Form1 frm1 = new Form1(ime); 
      frm1.show(); 
     } 

В Form1,

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

Только для кода ответы не помогают. Если вы не объясните, в чем проблема, и как ваше решение обратится к ней, это не будет очень полезно для всех. – IInspectable

Смежные вопросы