【问题标题】:Handle closing event for dynamically created form处理动态创建的表单的关闭事件
【发布时间】:2014-06-12 20:04:39
【问题描述】:

我有一个正在运行的程序,它可以从一个硬件中读取数据。我的程序能够以用户指定的速率绘制这些传入值。 (使用 zedgraph 控件)。当用户选择绘制值时,会动态创建一个包含该图的新表单。

实际上,用户可以拥有任意数量的图表。我的问题是我需要为这些动态创建的表单(包含图表)关闭时创建一个事件处理程序。我知道对于我的主 UI,我可以使用设计器工具并单击关闭的事件来创建处理程序。但是我不确定如何为动态创建的表单执行此操作。

感谢任何建议!

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    查看表单的FormClosed event。您可以使用如下代码连接它:

    var form = new WhateverForm();
    form.FormClosed += (sender, e) => DoStuffs(form);
    form.Show();
    

    【讨论】:

      【解决方案2】:

      您可以在代码中为事件添加处理程序:

      someObject.SomeEvent += SomeHandler;
      

      SomeHandler 可以是 lambda 表达式、匿名方法或实际方法名称。

      【讨论】:

        【解决方案3】:

        设计师没有做任何花哨的事情。您可以在 .Designer.cs 文件中看到它在做什么。以下是您自己的做法:

        myDynamicForm.FormClosing += new FormClosingEventHandler(your_handler_method);
        

        【讨论】:

        • 谢谢!还有一个问题:如果我需要将某个对象(不是关闭的表单)传递给事件处理程序,我该如何声明呢?
        • 不幸的是,您没有定义事件处理程序的方法签名;这由FormClosingEventHandler 委托定义决定。但是您可以将这样的对象存储为调用类的成员变量,并在事件处理程序中使用它。
        猜你喜欢
        • 2011-01-01
        • 2022-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-06
        • 2016-02-04
        • 1970-01-01
        • 2013-04-21
        相关资源
        最近更新 更多