首頁 >後端開發 >C++ >如何使用委託與事件或建構函式在 Windows 窗體之間傳遞變數?

如何使用委託與事件或建構函式在 Windows 窗體之間傳遞變數?

Barbara Streisand
Barbara Streisand原創
2025-01-03 21:34:39122瀏覽

How to Pass Variables Between Windows Forms Using Delegates and Events or Constructors?

使用委託和事件在Windows 窗體之間傳遞變數

在這種情況下,您有一個主窗體和一個在「設定」子窗體表單中,將變數傳遞給子表單的常見方法是透過使用委託和

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

第2步:在事件中傳遞變數處理程序

當您點選主窗體上的「設定」按鈕時,使用要傳遞的變數建立事件參數實例並引發事件:

private void toolStripBtnSettings_Click(object sender, EventArgs e)
{
    PageInfoEventArgs args = new PageInfoEventArgs(SomeString);
    this.OnPageInfoRetrieved(args);

    SettingsForm settingsForm = new SettingsForm();
    settingsForm.ShowDialog();
}

第 3步驟:擷取子表單中的變數

在「設定」表單中,處理透過重寫對應的事件處理程序來處理事件:

public partial class SettingsForm : Form
{
    protected override void OnShown(EventArgs e)
    {
        base.OnShown(e);

        // Retrieve the event arguments
        PageInfoEventArgs args = this.Tag as PageInfoEventArgs;
        if (args != null)
        {
            // Access the passed variable
            string receivedText = args.PageInfo;
        }
    }
}

使用建構子傳遞變數

或者,您也可以將變數直接傳遞給子層級的建構函式form:

public partial class SettingsForm : Form
{
    private string receivedText;

    public SettingsForm(string text)
    {
        this.receivedText = text;
    }
}

在這種情況下,您將使用該變數建立子表單實例作為參數:

SettingsForm settingsForm = new SettingsForm(SomeString);

以上是如何使用委託與事件或建構函式在 Windows 窗體之間傳遞變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn