終於設法解決這個問題。我的代碼有兩個問題。其中一種方式是我打開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