我有他以下表格:
- 創建 Form1 時呼叫的初始化函式。
- 打開另一個表單的按鈕 (Form2)
我需要的是Initialize()不僅在創建 Form1 時呼叫,而且在 Form2 關閉時呼叫,因為 Form2 可能已經修改了一些Initialize需要再次呼叫的東西。
如何檢測 form2 何時關閉?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Initialize();
}
void Initialize()
{
// Read a config file and initialize some stuff
}
// Clicking this button will open a Form2
private void button1_Click(object sender, EventArgs e)
{
var form2 = new Form2().Show();
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
// some stuff that Form2 does which involves modifying the config file
}
}
uj5u.com熱心網友回復:
您只需要為 FormClosing 事件添加一個事件處理程式,此處理程式可以在您的第一個表單類中,在這里您可以呼叫該類的每個內部方法
private void button1_Click(object sender, EventArgs e)
{
var form2 = new Form2();
form2.FormClosing = childClosing;
form2.Show();
}
private void childClosing(object sender, FormClosingEventArgs e)
{
Initialize();
....
}
uj5u.com熱心網友回復:
除了史蒂夫的出色回答外,您還可以考慮將 Form2 顯示為模式對話框。這意味著 Form1 中的代碼執行將停止,直到 Form2 被解除。這可能適用于您的應用程式,也可能不適用于您的應用程式,我們不知道它的作用。
無論如何,您應該使用ShowDialog()而不是Show()這樣:
// Clicking this button will open a Form2
private void button1_Click(object sender, EventArgs e)
{
var form2 = new Form2().ShowDialog(); // <-- code STOPS here until form2 is closed
Initialize(); // form2 was closed, update everything
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/429719.html
上一篇:如何防止彈出表單超出螢屏區域?
