c# - 订阅另一种形式的按钮点击

标签 c# event-handling eventargs

所以我有 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 因为它是一个方法组是我得到的错误。有谁知道执行此操作的正确方法或正确语法吗?

最佳答案

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

关于c# - 订阅另一种形式的按钮点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23572130/

相关文章:

c# - 为什么不使用自定义类而不是继承 EventArgs 类

C# 从 MP4 流中提取位图

c# - 如果没有匹配的 Monitor.Exit,Monitor.Enter 会发生什么情况?

c# - 仅当文件存在时才加载资源字典

android - 在 Android 上收听音量变化事件

c# - 为什么使用 EventArgs.Empty 而不是 null?

c# - 如何使用 LINQ - Entity Framework 从表中选择存在于联结表中的元素

c# - 具有直接后果的 NumericUpDown ValueChanged 事件?

jquery - 如何使用 jQuery 触发自定义事件?

c# - 在事件声明中正确使用泛型