2013-03-02 89 views
1

我有listView与下面的列名&电子邮件like用以下数据获取某列的数据选定行中

NAME  EMAIL 
adam  [email protected] 
james [email protected] 
kris  [email protected] 

我选择詹姆斯排,现在两个文本框我希望自己的名字&电子邮件是有 像

textbox1 = james 
textbox2 = [email protected] 

什么我实际上做的是对form1我已经contextmenu与项目更新。 点击updatecontextmenu负载不正确form2textbox名称和电子邮件。 listview包含姓名和电子邮件,如上所示。

我想将名称从列表视图中选定的行中分别命名为textbox和email。

我试过了。

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(); 
} 

但出现错误。

+0

InvalidArgument =“0”值是无效的“索引” 即时得到这个错误,所以我问美富。 – 2013-03-02 10:52:15

+0

请显示您写入的引发错误的代码。什么是mofo?显示了代码的 – shahkalpesh 2013-03-02 10:53:34

+0

。 – 2013-03-02 11:37:19

回答

1

更新。 尝试添加到您的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(...)

+0

ive更新了问题,请参阅和回复。 – 2013-03-02 11:31:45

+0

我已经更新了我的答案。检查它;) – Rafal 2013-03-02 11:42:48

+0

非常感谢。 我真的很感激它。 上帝保佑你。 – 2013-03-02 11:56:30

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

仍然出错。 实际上我在做什么。在项目更新的窗体1上下文菜单上使用 。 点击updatecontextmenu加载form2与文本框的名称和电子邮件。 listview包含姓名和电子邮件,如上所示。 我想从列表视图中选定的行放置名称,分别命名文本框和电子邮件。 我试过了。 private void updateToolStripMenuItem_Click(object sender,EventArgs e) { Form3 update = new Form3(); update.ShowDialog(); } – 2013-03-02 11:19:59

+0

仍然出现错误。 请参阅ive向问题添加了详细信息。 – 2013-03-02 11:25:36

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; 
}