在winforms之间传递variables

我在Windows.Forms应用程序中有关于委托的问题。

有两种forms:

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

  2. “设置”forms,这是“孩子”的forms。

当我单击主窗体中的“设置”button时,将打开“设置”窗体的一个实例。

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

这是我迄今为止所做的,主要forms的代码:

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

谢谢你的任何想法。

最好的祝福,

/安德烈·

将你想要的任何信息传递给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 

在上面的“示例”中,您可以用一个string构造一个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 } 

Setttings表单是一个类。 现在是你的,你可以做你喜欢的东西。 所以给它的构造函数添加一个参数(或者你想要的)。 然后在您的MainForm调用SettingsForm(无论),你都设置。

我会build议将属性添加到SettingsForm。

然后,像这样调用它:

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

你为什么不添加一个构造函数到你的设置窗体,它需要参数并传入你需要的任何数据?

您可以为接受文本的设置表单创build参数化构造函数,并将其设置为表单中的属性

 public partial class SettingsForm : Form { public string DisplayText {get;set;} public SettingsForm(string text) { DisplayText = text; } } 

那么,你只需要像这样初始化设置(从你的mainform)

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

您的设置表单将被正确初始化,并且您可以在DisplayText属性中准备好所需的文本