从选定行的列中获取数据

时间:2013-03-02 10:40:22

标签: c# .net winforms listview

我有listView以下列名称&通过以下数据发送电子邮件,例如

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

我选择james row,现在在两个文本框中我想要他们的名字&电子邮件到那里 像

textbox1 = james
textbox2 = james@gmail.com

我正在做的事情是form1contextmenu项目更新。 点击updatecontextmenu错误加载form2,并带有textbox名称和电子邮件。 listview包含姓名和电子邮件,如上所示。

我想将列表视图中所选行的名称分别命名为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();
}

但是收到错误。

3 个答案:

答案 0 :(得分:3)

ListViewItem selItem = ListView1.SelectedItems[0];
Console.WriteLine(selItem.SubItems[0].Text);
Console.WriteLine(selItem.SubItems[1].Text);

答案 1 :(得分: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(...)

的内容

答案 2 :(得分: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;
}