首頁 > 後端開發 > C++ > 如何使用委託在 Windows 窗體之間傳遞資料?

如何使用委託在 Windows 窗體之間傳遞資料?

DDD
發布: 2025-01-03 19:18:42
原創
779 人瀏覽過

How to Pass Data Between Windows Forms Using Delegates?

使用委託在Windows 窗體之間傳遞資料

在Windows 窗體應用程式中,當使用多個窗體時,通常需要傳遞數據他們之間。實現這一目標的常見方法是透過代表。以下是使用委託實作資料傳遞的方法:

建立委託

首先,您需要建立一個委託作為資料傳輸的回呼方法。在C# 中,可以如下完成:

public delegate void PageInfoHandler(object sender, PageInfoEventArgs e);
登入後複製

此委託聲明一個帶有兩個參數的方法:一個發送者物件(通常是發送資料的表單)和一個事件參數物件(其中包含實際的數據)。 data)。

使用委託

在主視窗中,您可以建立委託的實例,並在您想要將資料傳遞到子視窗時引發事件。例如:

public partial class MainForm : Form
{
    // Declare the delegate instance
    public event PageInfoHandler PageInfoRetrieved;

    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);
    }
}
登入後複製

擷取資料

在子表單(在本例中為 SettingsForm)中,您可以訂閱委託事件來接收資料。這可以在子窗體的建構函式或其初始化程式碼中完成。例如:

public class SettingsForm : Form
{
    public SettingsForm()
    {
        // Subscribe to the delegate event
        if (MainForm.PageInfoRetrieved != null)
            MainForm.PageInfoRetrieved += new PageInfoHandler(OnPageInfoRetrieved);
    }

    private void OnPageInfoRetrieved(object sender, PageInfoEventArgs e)
    {
        // This method will be called when the PageInfoEventArgs is raised
        // in the main form. You can access the data from the event argument here.
        // ...
    }
}
登入後複製

使用資料

在子表單中擷取資料後,您可以使用提供的事件參數存取實際資料。在此範例中,資料作為 PageInfoEventArgs 物件的屬性傳遞。例如,您可以這樣使用它:

// In the SettingsForm
private void DisplayData()
{
    // Get the data from the event arguments
    string data = e.Data;

    // Display or use the data in the child form
    // ...
}
登入後複製

透過執行以下步驟,您可以使用委託在多個Windows 窗體之間高效地傳遞數據,從而實現應用程式中窗體之間的通信和資料交換。

以上是如何使用委託在 Windows 窗體之間傳遞資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板