所以我有2个表单,需要将属性从一个表单传递给另一个表单。
在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,因为它是一个方法组是我得到的错误。有没有人知道这样做的正确方法,或者可能是正确的语法?
答案 0 :(得分:1)
试试这个:
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.);
}
希望这有帮助。
答案 1 :(得分:1)
1)创建一个包含2个表单的新项目。
2)在Form2上,创建一个按钮。
3)在按钮的属性中,将修改器更改为内部。 通常,这是私有,这意味着只有Form2才能访问button1及其属性。将其更改为内部允许程序集中的任何类访问button1。如果您要将其更改为公开,您还可以允许您在项目中引用的库也访问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;
}