所以我有两个表单,需要从一个表单传递属性到另一个。
在Form 1中我有一个方法
private void rb_CheckedChanged(object sender, EventArgs e)
{
var frm2= new Form2();
WorkComplete += frmSetNewTime.btnOk_Click;
frmSetNewTime.Show();
}
private void WorkComplete(object sender, EventArgs e)
{
// Property = Property from form 2
}
在Form2中我有一个方法叫做btnOK_Click
public void btnOk_Click(object sender, EventArgs e)
{
Property = 5
}
我的目标是将属性从form2传递回form 1。
我不能订阅WorkComplete,因为它是一个方法组是我得到的错误。有人知道正确的方法,或者正确的语法吗?
1)创建一个包含2个表单的新项目
2)在Form2上创建一个按钮。
3)在按钮的属性中,将Modifiers更改为Internal。通常,这是Private,这意味着只有Form2可以访问button1及其属性。将其更改为Internal允许程序集中的任何类访问button1。如果你将其更改为Public,你也可以允许你在项目中引用的库访问button1。 4)在Form1中,在类中添加以下代码: Form2 frm;
private void Form1_Load(object sender, EventArgs e)
{
// Create and show the form.
frm = new Form2()
frm.Show();
// Assign the event handler for the button to a handler within this class.
frm.button1.Click += this.Form2_button1_Click;
}
// This is the event handler that will run when you click the button on Form2.
private void Form2_button1_Click(object sender, EventArgs e)
{
MessageBox.Show("You clicked the button on Form 2!");
var frmProperty = frm.Property;
}
试试这个:
public event OnWorkCompleted;
public void WorkComplete()
{
if(OnWorkCompleted != null)
OnWorkCompleted(Property, null);
}
在订阅者表单上:
Form1.OnWorkCompleted += Form1WorkCompleted;
public void Form1WorkCompleted(object sender, EventArgs e)
{
var property = (int)sender;
MessageBox.Show('hey form 1 property is ' + property.);
}