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

时间:2011-06-06 23:10:35

标签: c# winforms

我需要传递来自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";
}

5 个答案:

答案 0 :(得分:26)

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

答案 1 :(得分: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();


}

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

有一种更简单的方法可以将字符串从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 .... 

答案 4 :(得分:-1)

专业提示

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

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