Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将字符串值从一种形式传递到另一种形式';C中的s加载事件#_C#_Winforms - Fatal编程技术网

C# 如何将字符串值从一种形式传递到另一种形式';C中的s加载事件#

C# 如何将字符串值从一种形式传递到另一种形式';C中的s加载事件#,c#,winforms,C#,Winforms,我需要从表单1传递一个字符串值: public void button1_Click(object sender, EventArgs e) { string DepartmentName = "IT"; Form2 frm2 = new Form2(); Frm2.Show(); this.Hide(); } 进入表单2加载事件。例如: private void Form2_Load(object sender, EventArgs e) { Mes

我需要从
表单1
传递一个字符串值:

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

    Frm2.Show();
    this.Hide();
}
进入
表单2
加载
事件。例如:

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);
   }
}
从表格1:

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);

   }

}
表格一

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
    }
}

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

PRO-TIP

将来,请以更通用的方式考虑它:表单只是一个类,而加载事件只是一个方法


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

有一种更简单的方法将字符串从表单2传递到表单1。在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 ....