C#Listbox传递字符串

时间:2012-07-02 10:37:08

标签: c#

我似乎在将一些字符串从一个表单传递到另一个表单时遇到问题。 我在Form1上有两个listBox但我想使用Form2将信息传递到Form1中的listBoxes。 在Form2中,我有一个button_Click函数,它使用params字符串a和字符串b调用Form1中的函数。

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 个答案:

答案 0 :(得分: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的新实例,你需要解决正确的问题

答案 1 :(得分:1)

Form1 frm = new Form1();

以上将初始化一个新表单,它不会更改Form1的现有实例。

答案 2 :(得分:0)

您的输入都是空的,因此在调用

之前调试txtBox1.Text
frm.AddItemToListBox(txtBox1.Text,txtBox2.Text);

或者在添加字符串后不重绘表单。这可以通过使用

强制执行
listBox1.Invalidate();
listBox2.Invalidate();
添加字符串后立即