在winforms之间传递variables
我在Windows.Forms应用程序中有关于委托的问题。
有两种forms:
-
主窗体,其中有一个名为“设置”的button。
-
“设置”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属性中准备好所需的文本