Bạn có thể sử dụng một cách tiếp cận khác nếu muốn.
- Sử dụng System.Action (Ở đây bạn chỉ cần chuyển hàm main form làm tham số cho biểu mẫu con giống như một hàm gọi lại)
- Phương pháp OpenForms (Bạn gọi trực tiếp một trong các biểu mẫu đang mở của mình)
Sử dụng System.Action
Bạn có thể nghĩ về nó như một hàm gọi lại được truyền cho biểu mẫu con.
Options frmOptions = new Options(UpdateSettings);
frmOptions.Show();
public void UpdateSettings(string data)
{
}
Action<string> UpdateSettings = null;
public Options(Action<string> UpdateSettings)
{
InitializeComponent();
this.UpdateSettings = UpdateSettings;
}
private void btnUpdate_Click(object sender, EventArgs e)
{
if (UpdateSettings != null)
UpdateSettings("some data");
}
Phương pháp OpenForms
Phương pháp này rất dễ dàng ( 2 dòng ). Nhưng chỉ hoạt động với các biểu mẫu đang mở. Tất cả những gì bạn cần làm là thêm hai dòng này vào bất cứ nơi nào bạn muốn chuyển một số dữ liệu.
Main frmMain = (Main)Application.OpenForms["Main"];
frmMain.UpdateSettings("Some data");
Tôi đã cung cấp câu trả lời của mình cho một câu hỏi tương tự ở đây