点击另一个表单的订阅按钮



所以我有两个表单,需要从一个表单传递属性到另一个。

在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.);
}

相关内容

  • 没有找到相关文章

最新更新