標籤:baidu send 調用 nts 變化 key comm tty protected
1 在主視窗中執行個體化子視窗
Form2 f2 = new Form2();
2 通過按鈕來顯示子視窗
f2.Show();
3 關閉子視窗而不釋放子視窗對象的方法
protected override void Dispose(bool disposing) { Hide(); //if (disposing && (components != null)) //{ // components.Dispose(); //} //base.Dispose(disposing); }
(注意:在子視窗Designer檔案中修改)
4 在父視窗關閉時銷毀子視窗對象
子視窗類中添加的關閉函數如下:
public void Close() { this.Dispose(); }
父視窗關閉是銷毀子視窗對象,因此,在父視窗的關閉動作FormClosed中添加調用子視窗f2的銷毀函數。
private void Form1_FormClosed(object sender, FormClosedEventArgs e) { f2.Close(); }
===================================================================================
另外還有一種方式:
子表單定義一個委託,父表單執行個體化子表單時註冊子表單的委託事件(具體功能是實現父視窗的控制項變化),子表單關閉時呼叫事件方法。
父表單
public void ShowPopWindow()
{
TestA sub = new TestA();
sub.CloseWindow += new Action(sub_CloseWindow);
sub.show();
}
void sub_CloseWindow()
{
//改變父表單控制項內容
}
子表單
public class TestA
{
public event Action CloseWindow;
protected virtual void OnCloseWindow()
{
Action handler = CloseWindow;
if (handler != null) handler();
}
//子表單關閉事件
private void CloseSubWindow()
{
OnCloseWindow();
}
}
出處:https://zhidao.baidu.com/question/134623114688436765.html
========================================================================
C# 關閉子表單釋放子表單對象問題