我需要传递来自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";
}
答案 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 的答案的核心,我喜欢称之为“表格也是类”:)