1

我有listView以下列名称和电子邮件以及以下数据,例如

NAME     EMAIL
adam     adam@gmail.com
james    james@gmail.com
kris     kris@gmail.com

我选择 james 行,现在在两个文本框中,我希望他们的姓名和电子邮件在那里

textbox1 = james
textbox2 = james@gmail.com

我实际上正在做的是form1我已经contextmenu进行了项目更新。单击带有名称和电子邮件 的updatecontextmenu不良负载。包含姓名和电子邮件,如上所示。form2textboxlistview

我想将列表视图中所选行中的名称分别放置到名称textbox和电子邮件中。

我试过这个。

updateToolStripMenuItem_Click(...)
{

    Form3 update = new Form3();
    update.ShowDialog();            
}

Form3_Load(...)
{
    Form1 f1 = new Form1();
    string oldName = f1.listView1.SelectedItems[0].SubItems[0].Text;
    string oldEmail = f1.listView1.SelectedItems[0].SubItems[0].Text;
    textBox1.Text = oldName.ToString();
    textBox2.Text = oldEmail.ToString();
}

但得到错误。

4

3 回答 3

3
ListViewItem selItem = ListView1.SelectedItems[0];
Console.WriteLine(selItem.SubItems[0].Text);
Console.WriteLine(selItem.SubItems[1].Text);
于 2013-03-02T11:11:05.263 回答
2

更新。尝试添加到您的Form3窗口方法:

public void SetData(string name, string email)
{
    textBox1.Text = name;
    textBox2.Text = email;
}

接下来,将您的updateToolStripMenuItem_Click事件处理程序更新为:

updateToolStripMenuItem_Click(...)
{
    Form3 update = new Form3();
    ListViewItem selectedItem = listView1.SelectedItems[0];
    update.SetData(selectedItem.SubItems[0].Text, selectedItem.SubItems[1].Text);
    update.ShowDialog();            
}

最后,明确的内容Form3_Load(...)

于 2013-03-02T11:20:24.530 回答
0

尝试从您的Form3

public string OldName {get;set;}
public string OldEmail {get;set;}

然后,从你的From1

updateToolStripMenuItem_Click(...)
{
    using(var update = new Form3())
    {
        var firstCol = listView.SelectedItems[0].Text;
        update.OldName = listView.SelectedItems[0].SubItems[1].Text;
        update.OldEmail = listView.SelectedItems[0].SubItems[2].Text;
        update.ShowDialog();     
    } 
}

然后,Form3看起来像这样

Form3_Load(...)
{
    textBox1.Text = OldName;
    textBox2.Text = OldEmail;
}
于 2013-03-02T11:21:02.480 回答