如何将listview行数据传递到另一个现有表单

时间:2014-01-03 08:32:06

标签: c# winforms listview

我希望有2个表单,其中第一个表单有一个按钮,它将在对话框表单中加载form2。 form2将显示一个列表视图,显示学生的数据。现在我需要提取所选行的第一个索引。一旦我双击该行,form2将关闭并将数据传递到form1中的文本框。

我使用下面的代码关闭了我的form1并在form2中创建了一个新的form1实例。

来自form2的

 private void listView1_DoubleClick(object sender, EventArgs e)
 {
  var cl = listView1.Items[listView1.FocusedItem.Index].SubItems[0].Text;
  Form1 wa= new Form1();
  wa.loadid(cl);
  wa.Show();
  this.Close();
 }
来自form1的

 private void btnReq_Click(object sender, EventArgs e)
 {
        Form2 f2= new Form2();
        f2.Show();
        this.Close();
 }
 public void loadid(String ms)
 {
  String newstring = ms;
  studentid.Text = newstring;
 }

2 个答案:

答案 0 :(得分:2)

我建议使用对话,这很容易:

这是Form1。您实例化并打开f2作为Dialog,然后等待其result.OK

private void Button1_Click(System.Object sender, System.EventArgs e)
{
    var f2 = new Form2();

    if (f2.ShowDialog() == DialogResult.OK) {
        studentId.Text = f2.SelectedStudentId;
    } else {
        studentId.Text = "Select a Student!!!!";
    }
}

这在Form2中,您已经创建了listview和公共属性以公开:

 public string SelectedStudentId { get; set; }

 private void listView1_DoubleClick(object sender, EventArgs e)
 {
    var cl = listView1.Items[listView1.FocusedItem.Index].SubItems[0].Text;
    SelectedStudentId = cl;
    DialogResult = DialogResult.OK; //will close this dialog (form2)
 }

答案 1 :(得分:0)

这应该对你有用

在Form1中创建一个这样的公共变量:

public partial class Form1: Form
{
    //New variable
    public static string StudentIDVal;

然后,将Form1上的按钮单击更改为:

private void btnReq_Click(object sender, EventArgs e)
{
    Form2 f2= new Form2();
    f2.ShowDialog(); 
    studentid.Text = StudentIDVal;
}

然后,在项目单击的Form2上,您可以简单地:

private void listView1_DoubleClick(object sender, EventArgs e)
{
   var cl = listView1.Items[listView1.FocusedItem.Index].SubItems[0].Text;
   Form1.StudentIDVal = cl.ToString();
   this.Close();
}