使用委託在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中文網其他相關文章!