我有ListView
的winform1并添加了按钮。当我按下添加按钮时,它会打开新的winform2,其中包含2个文本框,名称和姓氏以及保存按钮。
现在我想要的是当我按下保存时将这些值添加到listView。我的代码没有错误,但我的列表框不会更新。
以下是我的列表类的代码:
public class Person
{
public string Name { get; set; }
public string Surname { get; set; }
}
这是form2代码:
public partial class add : Form
{
public add()
{
InitializeComponent();
}
Form1 f1 = new Form1();
List<Person> People = new List<Person>();
private void button1_Click(object sender, EventArgs e)
{
Person p = new Person();
p.Name = textBox1.Text;
p.Surname = textBox2.Text;
People.Add(p);
f2.listView1.Items.Add(p.Name + " " + p.Surname);
}
}
现在问题是调试没有显示任何错误。我的listbox1没有更新,我不知道我做错了什么。
尝试使用f2.ShowDialog();
然后它会在列表视图中显示添加的项目,但它会再次打开form1,当我添加新数据时,之前的数据将会丢失。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
我确保Person
表单中的add
可供调用者Form1
使用,这样当用户点击“确定”按钮时,您可以将该信息添加到列表视图。
为简单起见,我更改了我的版本以添加单个项目。我留给你了解如何对List<Person>
进行相同的操作。
在代码中,看起来像这样:
public partial class add : Form
{
// notice that we don't need a List, just a single item
public Person person = new Person();
public add()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.person.Name = this.nameTextBox.Text;
this.person.Surname = this.surnameTextBox.Text;
// the listView is only be updated if the changes were accepted
// setting the result to OK will also close the dialog
this.DialogResult = DialogResult.OK;
}
}
Form1
的代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void addButton_Click(object sender, EventArgs e)
{
var add = new add();
if (add.ShowDialog() == DialogResult.OK)
{
this.listView1.Items.Add(add.person.Name +
" " + add.person.Surname);
}
}
}
答案 1 :(得分:0)
试试这个文本框:
public string textbox1_text
{
get { return textBox1.Text; }
set { textBox1.Text = value; }
}
使用这些代码加载新表单:
Form2 f2 = new Form2();
f2.Owner = this;
f2.Show();
答案 2 :(得分:0)
这段代码似乎错了:
f2.listView1.Items.Add(p.Name + " " + p.Surname); //Form2
也许你的意思是:
f1.Show();
f1.listView1.Items.Add(p.Name + " " + p.Surname); //Form1
//this.Close(); <-- if you want to close the form after show f1