我希望有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;
}
答案 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();
}