Windows Form 之間相互引用

來源:互聯網
上載者:User

想用WinForm寫點東西,遇到一個鬱悶的問題,想在Forms之間相互傳值遇到困難。上網找到一個解決方案,又自創一種。假設要在Form1中建立Form2,Form2要訪問Form1,最簡單的方法是給Form2加上一個

public Form1 parent;

Form1建立Form2時這樣寫:

Form2 f2 = new Form2();
f2.parent = this;
f2.Show();

就在Form2中可以用 parent 訪問Form1了。

但是如果Form1和Form2沒有父子關係,Form2不是在Form1中建立,Form2也不是在Form1中建立,怎麼得到對方的執行個體呢?這裡以Form1為例。我們建立另一個Form,用它來執行個體化其他Form,比如叫 Starter。

在Starter中加上靜態變數f1和靜態方法GetForm1():

Class Starter
    public partial class Starter : Form
    {
        public static Form1 f1;

        public static Form1 GetForm1()
        {
            if (f1 == null)
            {
                f1 = new Form1();
            }
            return f1;
        }
        
        public Starter()
        {
            InitializeComponent();
            GetForm1().Show();            
        }
    }

就可以用Starter.GetForm1()得到f1啦。再把Starter設定為啟動最小化,不在狀態列顯示,我們就看不到它啦。

PS:還發現任何事件的 XXXing()處理函數裡面都可以把事件的 EventArgs e這個 e.Cancel 設為 true,就把這個事件取消了,竟然現在才知道這麼有用的東東。。。-_-

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.