首页 > 后端开发 > C++ > 如何使用委托和事件处理程序在 Windows 窗体之间传递数据?

如何使用委托和事件处理程序在 Windows 窗体之间传递数据?

Linda Hamilton
发布: 2025-01-04 17:30:39
原创
894 人浏览过

How Can I Pass Data Between Windows Forms Using Delegates and Event Handlers?

在 Windows 窗体之间传递数据

在 Windows 窗体应用程序中管理多个窗体时,您可能会遇到需要在 Windows 窗体之间共享数据的情况他们。本文解决了将变量从主窗体传递到“设置”窗体的问题,从而允许新窗体显示该信息。

使用委托和事件处理程序

您在主表单中提供的代码使用委托和事件处理程序将数据发送到设置表单。委托是一种为具有特定输入和输出参数的方法定义签名的类型。通过将委托分配给事件处理程序,您可以注册事件发生时要调用的方法。

在这种情况下,主窗体创建一个带有 PageInfoEventArgs 类型的输入参数的委托 PageInfoHandler。 PageInfoEventArgs 类包含要传递到设置表单的数据(在本例中为字符串)。单击“设置”按钮时,将调用事件处理程序 (OnPageInfoRetrieved),该事件处理程序将调用已注册的方法(在本例中为 PageInfoRetrieved)。

检索设置表单中的数据

在设置表单中,您需要定义一个属性或方法,允许您访问从主表单传递的数据。在建议的解决方案中,使用构造函数将字符串传递到设置表单。此构造函数会将字符串存储在私有成员变量中,然后可以通过公共 getter 方法访问该字符串。

完整代码示例

完整代码示例如下如下:

MainForm.cs

public partial class MainForm : Form
{
    public delegate void PageInfoHandler(object sender, PageInfoEventArgs e);
    public event PageInfoHandler PageInfoRetrieved;

    private void toolStripBtnSettings_Click(object sender, EventArgs e)
    {
        PageInfoEventArgs args = new PageInfoEventArgs(SomeString);
        OnPageInfoRetrieved(args);

        SettingsForm settingsForm = new SettingsForm(SomeString);
        settingsForm.ShowDialog();
    }

    private void OnPageInfoRetrieved(PageInfoEventArgs args)
    {
        if (PageInfoRetrieved != null)
            PageInfoRetrieved(this, args);
    }
}
登录后复制

SettingsForm.cs

public class SettingsForm : WinForm
{
    private string m_Data;

    public SettingsForm(string data)
    {
        m_Data = data;
    }

    public string Data { get { return m_Data; } }
}
登录后复制

以上是如何使用委托和事件处理程序在 Windows 窗体之间传递数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板