.net 在Windows窗体之间传递变量

fdbelqdn  于 2023-05-19  发布在  .NET
关注(0)|答案(5)|浏览(179)

我遇到了一个有关Windows窗体应用程序中的委托的问题。
有两种形式:
1.主窗体,其中有一个名为“设置”的按钮。
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;

    // Other stuff, events, blah, blah

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

t30tvxxf1#

将您想要的任何信息传递给Settings窗体的构造函数,并为您需要的内容提供访问器方法。

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

pbgvytdp2#

Settings窗体是一个类。它现在是你的了你想怎么处理都行。因此,向其构造函数添加一个参数(或任意数量)。然后在你的主窗体中调用SettingsForm(无论什么),你就万事俱备了。

fsi0uk1n

fsi0uk1n3#

我建议在SettingsForm中添加一个属性。
然后,这样调用它:

SettingsForm settingsForm = new SettingsForm(); 
settingform.myProperty = myPropertyvalue;
settingsForm.ShowDialog();
kkbh8khc

kkbh8khc4#

您可以为接受文本的设置窗体创建一个参数化构造函数,并将其设置为窗体中的属性

public partial class SettingsForm : Form
{

   public string DisplayText {get;set;}

   public SettingsForm(string text)
   {
        DisplayText = text;
   }
}

然后,你只需要像这样初始化设置(从你的主窗体)

var settingsForm = new SettingsForm("my init text");

设置窗体将正确初始化,并且DisplayText属性中的所需文本已准备就绪

v9tzhpje

v9tzhpje5#

在你的设置表单中添加一个构造函数,它接受参数并传入你需要的任何数据。

相关问题