C# 關閉子表單釋放子表單對象問題

來源:互聯網
上載者:User

標籤: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# 關閉子表單釋放子表單對象問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.