在Windows 窗體之間傳遞資料
在Windows 窗體應用程式中,經常需要在多個窗體之間共用數據。當一個表單開啟另一個表單時,它可能需要傳遞特定資訊以供新表單使用。實現此目的的常見方法是透過委託。
問題描述
在特定場景中,主窗體有一個名為“設定”的按鈕,用於開啟子窗體稱為“設定表單” 。需求是在Settings Form開啟的時候傳入一個變量,這樣變數的值就可以在新的窗體中顯示出來。
Delegate Approach
來解決對於這個問題,您可以在主窗體中定義一個接受自訂事件處理程序的委託。事件處理程序再透過事件參數類別將變數傳遞給子表單。
在您提供的程式碼片段中,在MainForm 類別中定義了以下委託和事件:
public partial class MainForm : Form { public delegate void PageInfoHandler(object sender, PageInfoEventArgs e); public event PageInfoHandler PageInfoRetrieved; ... }
必須定義PageInfoEventArgs 類別來保存變數值:
public class PageInfoEventArgs : EventArgs { public string SomeString; public PageInfoEventArgs(string someString) { SomeString = someString; } }
當點擊「設定」按鈕時在主窗體中,使用變數值建立PageInfoEventArgs 的實例,並觸發PageInfoRetrieved事件。然後,設定表單中的事件處理程序將接收該變數並可以使用它來顯示值。
建構子方法
另一種方法是將變數作為設定表單建構子的參數。然後,表單可以在其邏輯中使用建構函數參數。
例如,您可以:
public class SettingsForm : Form { private string _variable; public SettingsForm(string variable) { _variable = variable; } ... // Use _variable as needed }
在 MainForm 中,您可以將設定表單建立為:
SettingsForm settingsForm = new SettingsForm("value"); settingsForm.ShowDialog();
以上是如何在Windows窗體之間有效率地傳遞資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!