2017-01-21 28 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; } 

加一個按鈕來測試,如果我的字符串工作:

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

它不工作。 MessageBox不顯示任何內容。

+0

你在哪裏呈現'Form1'? – David

+0

您可能正在使用「Form1」的不同實例,而不是相同的實例。 – CodingYoshi

+0

@David我稍後顯示我的Form1。 –

回答

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

相關問題