Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/341.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#_Event Handling_Eventargs - Fatal编程技术网

C# 订阅其他表单的按钮单击

C# 订阅其他表单的按钮单击,c#,event-handling,eventargs,C#,Event Handling,Eventargs,所以我有两个表单,需要将属性从一个表单传递到另一个表单 在表格1中,我有一个方法 private void rb_CheckedChanged(object sender, EventArgs e) { var frm2= new Form2(); WorkComplete += frmSetNewTime.btnOk_Click; frmSetNewTime.Show(); } private void WorkCom

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

在表格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
    }
在表单2中,我有一个名为btnOK_Click的方法

public void btnOk_Click(object sender, EventArgs e)
    {
        Property = 5
     }
我的目标是将该属性从form2传递回Form1

我无法订阅WorkComplete,因为它是一个方法组,这是我得到的错误。有人知道这样做的正确方法或语法吗?

试试这个:

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)使用2个表单创建一个新项目

2) 在Form2上,创建一个按钮

3) 在按钮的属性中,将修改器更改为内部。 通常,这是私有的,这意味着只有Form2可以访问button1及其属性。将其更改为内部允许程序集中的任何类访问按钮1。如果要将其更改为Public,还可以允许项目中引用的库访问按钮1

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

我可以这样做,我试图将一个属性从form2传递到Form1。在这种情况下,您只需在类级别定义frm,并在事件处理程序中引用它。我已经更新了答案来证明这一点。