2012-07-02 38 views
1

我似乎有一個問題,從一個窗體傳遞一些字符串到另一個。 我有Form1上的兩個列表框,但我想使用Form2將信息傳遞到Form1中的列表框。 在Form2中,我有一個button_Click函數,它使用params字符串a和字符串b調用Form1中的函數。C#列表框傳遞字符串

private void button_Click(object sender, EventArgs e){ 
Form1 frm = new Form1(); 
frm.AddItemToListBox(txtBox1.Text,txtBox2.Text); 
} 

下面是在Form1中調用函數AddItemToListBox的代碼。
上面是Form1中的AddItemToListBox函數。

AddItemToListBox(string a, string b){ 
listBox1.Items.Add(a); 
listBox2.Items.Add(b); 
} 

但是,這不會將字符串添加到列表框中。沒有錯誤消息或任何東西。 我也曾嘗試宣告2個公共字符串STR1和STR2

AddItemToListBox(string a, string b){ 
listBox1.Items.Add(a); 
listBox2.Items.Add(b); 
STR1 = a; 
STR2 = b; 
} 

但是,如果我使用的顯示STR1和STR2的值的按鈕。他們將是「」,String.Empty。在顯示值的MessageBox中沒有任何顯示。但是,如果我放置MessageBox.Show(a);和MessageBox.Show(b);在AddItemToListBox函數中,字符串將被正確顯示,但仍不會添加到列表框中。

這讓我感到沮喪,因爲現在2個小時,我想知道爲什麼以及如何實際使用該方法將項目添加到列表框(如果可能的話)。最要好的提前致謝。

回答

3

嘗試在此方法的末尾添加frm.Show()。

private void button_Click(object sender, EventArgs e) 
{ 
    Form1 frm = new Form1(); 
    frm.AddItemToListBox(txtBox1.Text,txtBox2.Text); 
    frm.Show(); 
} 

但我相信這並不能解決您的問題。只是告訴你,你需要引用正確的Form1。我認爲你正在創建Form1的一個新實例,宥需要解決的正確

+0

感謝您的及時答覆之後被強迫。這工作。我現在明白了。 – woodmon122

1
Form1 frm = new Form1(); 

以上將初始化的新形式,它不會改變Form1的現有實例。

+0

謝謝。我現在明白了。有沒有辦法不初始化一個新的表單?就像從Form1調用一樣 – woodmon122

0

無論你的輸入是空的,所以叫

frm.AddItemToListBox(txtBox1.Text,txtBox2.Text); 

或者形式將您的字符串後,不重繪之前debugwatch txtBox1.Text。這可以通過使用

listBox1.Invalidate(); 
listBox2.Invalidate(); 

添加字符串