猿问

在winform之间传递变量

我在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);

    }

}


智慧大石
浏览 558回答 3
3回答

饮歌长啸

将所需的任何信息传递到“设置”表单的构造函数中,并提供所需的访问器方法。public class SettingsForm : WinForm{&nbsp; &nbsp; private string m_Data;&nbsp; &nbsp; private int m_nExample = 0;&nbsp; &nbsp; // ctor&nbsp; &nbsp; public SettingsForm(string _data)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; m_Data = data;&nbsp; // you can now use this in SettingsForm&nbsp; &nbsp; } // eo ctor&nbsp; &nbsp; public int Example {get{return(m_nExample);} }} // eo class SettingsForm在上面的“示例”中,您可以使用字符串构造一个SettingForm并获取它可能使用的整数。在您的代码中:private void toolStripBtnSettings_Click(object sender, EventArgs e){&nbsp; &nbsp; PageInfoEventArgs args = new PageInfoEventArgs(SomeString);&nbsp; &nbsp; this.OnPageInfoRetrieved(args);&nbsp; &nbsp; SettingsForm settingsForm = new SettingsForm("some data to pass");&nbsp; &nbsp; settingsForm.ShowDialog();&nbsp;&nbsp;&nbsp; &nbsp; int result = settingsForm.Example; // retrieve integer that SettingsForm used}

长风秋雁

结算表格是一个类。现在是您的事了,您可以使用它来做自己喜欢的事。因此,向其构造函数添加参数(或任意多个参数)。然后在MainForm中调用SettingsForm(无论如何),就一切就绪。
随时随地看视频慕课网APP
我要回答