我在Windows.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); } }
将所需的任何信息传递到“设置”表单的构造函数中,并提供所需的访问器方法。
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 }