如何在C#中将字符串值从一个窗体传递到另一个窗体的加载事件?

11

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

public void button1_Click(object sender, EventArgs e)
{
    string DepartmentName = "IT";
    Form2 frm2 = new Form2();

    Frm2.Show();
    this.Hide();
}

将代码放入Form2Load事件中。例如:

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";
}
5个回答

32

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

5
记住,表单就像任何其他类一样。
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();


}

1

你不应该那样做。相反,你可以在构造函数中传递你的字符串值:

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

其他回答者也告诉了你如何使用公共属性来实现它。


1

有一种更简单的方法将字符串从Form2传递到Form1。在表单之间创建关系,在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 .... 

0

专业技巧

未来,您可以以更通用的方式考虑:表单只是一个类,Load 事件只是一个方法。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接