3

所以我有 2 种形式,需要将属性从一种形式传递到另一种形式。

在表格 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 因为它是一个方法组是我得到的错误。有谁知道这样做的正确方法或正确的语法?

4

2 回答 2

2

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;
    }
于 2014-05-09T19:42:12.847 回答
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.);
}

希望这可以帮助。

于 2014-05-09T19:32:04.337 回答