首页 >后端开发 >C++ >如何使用委托和事件或构造函数在 Windows 窗体之间传递变量?

如何使用委托和事件或构造函数在 Windows 窗体之间传递变量?

Barbara Streisand
Barbara Streisand原创
2025-01-03 21:34:39145浏览

How to Pass Variables Between Windows Forms Using Delegates and Events or Constructors?

使用委托和事件在 Windows 窗体之间传递变量

在这种情况下,您有一个主窗体和一个“设置”子窗体表单中,将变量传递给子表单的常见方法是通过使用委托和

第 1 步:初始化委托和事件

在主窗体中,创建一个委托和事件来处理数据传输:

public partial class MainForm : Form
{
    /// <summary>
    /// Delegate to send data between forms
    /// </summary>
    public delegate void PageInfoHandler(object sender, PageInfoEventArgs e);

    /// <summary>
    /// Event of the delegate
    /// </summary>
    public event PageInfoHandler PageInfoRetrieved;
}

第2步:在事件中传递变量处理程序

当您单击主窗体上的“设置”按钮时,使用要传递的变量创建一个事件参数实例并引发事件:

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

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

第 3 步:检索子表单中的变量

在“设置”表单中,处理通过重写相应的事件处理程序来处理事件:

public partial class SettingsForm : Form
{
    protected override void OnShown(EventArgs e)
    {
        base.OnShown(e);

        // Retrieve the event arguments
        PageInfoEventArgs args = this.Tag as PageInfoEventArgs;
        if (args != null)
        {
            // Access the passed variable
            string receivedText = args.PageInfo;
        }
    }
}

使用构造函数传递变量

或者,您也可以将变量直接传递给子级的构造函数form:

public partial class SettingsForm : Form
{
    private string receivedText;

    public SettingsForm(string text)
    {
        this.receivedText = text;
    }
}

在这种情况下,您将使用该变量创建子表单实例作为参数:

SettingsForm settingsForm = new SettingsForm(SomeString);

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn