gpt4 book ai didi

c# - winform之间传递变量

转载 作者:太空狗 更新时间:2023-10-29 22:04:18 25 4
gpt4 key购买 nike

我对 Windows.Forms 应用程序中的委托(delegate)有疑问。

有两种形式:

  1. 主窗体,其中有一个名为“设置”的按钮。

  2. “设置”表单,这是“子”表单。

当我单击主窗体中的“设置”按钮时,它会打开设置窗体的一个实例。

我的问题是,当我打开设置表单时,我需要将一个变量传递给它。这样新表单将显示可变文本。我不知道如何检索子“设置”表单中的信息。我是通过在线教程来做到这一点的,但无法从教程中理解如何阅读目标表单中的信息。

这是我到目前为止所做的,主窗体中的代码:

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;

//other stuff, events blabla

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

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

private void OnPageInfoRetrieved(PageInfoEventArgs args)
{
if (PageInfoRetrieved != null)
PageInfoRetrieved(this, args);
}
}

最佳答案

将你想要的任何信息传递给设置表单的构造函数,并为你需要的东西提供访问器方法。

public class SettingsForm : WinForm
{
private string m_Data;
private int m_nExample = 0;

// ctor
public SettingsForm(string _data)
{
m_Data = data; // you can now use this in SettingsForm
} // eo ctor

public int Example {get{return(m_nExample);} }
} // eo class SettingsForm

在上面的“示例”中,您可以使用字符串构造一个 SettingForm 并获取它可能使用的整数。在您的代码中:

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

SettingsForm settingsForm = new SettingsForm("some data to pass");
settingsForm.ShowDialog();

int result = settingsForm.Example; // retrieve integer that SettingsForm used
}

关于c# - winform之间传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4247807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com