终于设法解决这个问题。我的代码有两个问题。其中一种方式是我打开Form3子窗体而不是将Form1作为类来引用,另一种是用我用来编辑无法正常工作的行的代码。
更改为此并来到解决方案;
Form1的代码 - 从选定的行与数据打开Form3的方法,原来使用的代码:
private void button2_Click(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count == 0) return;
Form3 form3 = new Form3();
int i = 0;
ListViewItem item = listView1.SelectedItems[i];
string title = item.SubItems[0].Text;
string description = item.SubItems[1].Text;
string priority = item.SubItems[2].Text;
string datedue = item.SubItems[3].Text;
form3.textBox1.Text = title.ToString();
form3.richTextBox1.Text = description.ToString();
form3.comboBox1.Text = priority.ToString();
form3.dateTimePicker1.Text = datedue.ToString();
form3.Show();
}
但它改成这样:
private void button2_Click(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count == 0) return;
using (Form3 form3 = new Form3())
{
int i = 0;
ListViewItem item = listView1.SelectedItems[i];
string title = item.SubItems[0].Text;
string description = item.SubItems[1].Text;
string priority = item.SubItems[2].Text;
string datedue = item.SubItems[3].Text;
form3.textBox1.Text = title.ToString();
form3.richTextBox1.Text = description.ToString();
form3.comboBox1.Text = priority.ToString();
form3.dateTimePicker1.Text = datedue.ToString();
form3.ShowDialog(this);
}
}
最后,在改变了代码Form3到这个:
private void button1_Click(object sender, EventArgs e)
{
Form1 form1 = (Form1)this.Owner;
int i = 0;
ListViewItem item = form1.listView1.SelectedItems[i];
item.SubItems[0].Text = textBox1.Text;
item.SubItems[1].Text = richTextBox1.Text;
item.SubItems[2].Text = comboBox1.Text;
item.SubItems[3].Text = dateTimePicker1.Text;
this.Close();
}
你检查,如果在调试时,form1'是NULL或'form1.listView1'是'NULL'吗? – ibiza 2015-03-31 18:51:53
在调试中它说form1为空。它指出“附加信息:对象引用未设置为对象实例” – DanH95 2015-03-31 19:14:13
请看我的答案,您必须事先手动设置“所有者”字段。 – ibiza 2015-03-31 19:24:11