如何在C#中将字符串值从一个表单传递到另一个表单的load事件

我需要从Form1传递一个字符串值:

 public void button1_Click(object sender, EventArgs e) { string DepartmentName = "IT"; Form2 frm2 = new Form2(); Frm2.Show(); this.Hide(); } 

进入Form2 Load事件。 例如:

 private void Form2_Load(object sender, EventArgs e) { MessageBox.Show(DepartmentName); // or // string sql1 = "select Service_Name from Service, " + // "EmployeeService where E_Dep = '" + DepartmentName + "' " + // "and s_ID = Service_ID"; } 

只需在Form2类上创建一个属性,然后在显示Form2之前进行设置。

 public class Form2 { ... public string MyProperty { get; set; } private void Form2_Load(object sender, EventArgs e) { MessageBox.Show(this.MyProperty); } } 

从Form1:

 public void button1_Click(object sender, EventArgs e) { string departmentName = "IT"; Form2 frm2 = new Form2(); frm2.MyProperty = departmentName; frm2.Show(); this.Hide(); } 

请记住,表单只是与其他类似的类

 public class Form2 : form { public string ShowMe {get;set;} private void Form2_Load(object sender, EventArgs e) { MessageBox.Show(ShowMe); } } 

来自表格1

 public void button1_Click(object sender, EventArgs e) { string DepartmentName = "IT"; Form2 frm2 = new Form2(); frm2.ShowMe = DepartmentName ; Frm2.Show(); this.Hide(); } 

你不这样做。 相反,您可以在构造函数上传递您的字符串值:

 public class Form2 { public Form2(string myParameter) : this() { //do whatever you need to do with myParameter } } 

其他的回答者也告诉过你如何使用公共财产。

有一种更简单的方法将字符串从Form2传递给Form1 。 在Form2和Form2之间创建一个关系,创建Form1的变量,在Form1中调用该变量并为其赋值….

 public partial class Form_2 : Form { public readonly Form1 _form1; public Form_2(Form1 form1) { _form1 = form1; InitializeComponent(); } private void Form2(object sender, EventArgs e) { _form1.Remark = txtbx_remark.Text; }// Remark is a string in Form1 .... 

专家提示

将来,请以更通用的方式考虑它:Form只是一个类,而Load事件只是一种方法。

如果您尝试在两个非Forms的对象之间传递值,则您将在一个类中拥有其他对象可以访问的公共属性。 这是rsbarro回答的核心,我喜欢称之为“表格也是类”:)