兩個視窗互相傳值問題

C#.Net新手的絆腳石、擋路牆,教你如何在兩個視窗之間共用變數的簡單小技巧。

當一個新手在寫C#.Net時,常常會發生不知道怎麼樣在兩個視窗之間互相傳值,甚至原本從VB.Net轉到C#.Net,更會發現原本簡單只要呼叫一下就可以互相使用變數與值的方法不管用了,這其實歸咎於C#.Net比起VB.Net是一個更嚴謹的語言。

廢話不多說,以下就來進行【在兩個視窗互相傳值】的解決方案吧!

 

1.開啟專案後,分別增加Form1與Form2。

2.在Form1增加以下語法:

	namespace PeterDotNetCS100818
{
    public partial class Form1 : Form
    {
        delegate void ThreadsSynchronization();
        Form2 f2 = new Form2();

        public Form1()
        {
            InitializeComponent();
            f2.f1 = this;
        }
    }
}

 

3.在Form2也打上與法:

	namespace PeterDotNetCS100818
{
    public partial class Form2 : Form
    {
        internal Form1 f1 = null;

        public Form2()
        {
            InitializeComponent();
        }
    }
}

PS:其中internal Form1 f1 = null;中的internal也可以設為public,端看個人如何設置。

 4.所有會使用到的元件或是變數,都要將Modifiers屬性改為Public或是Internal,目前只有試過此兩個屬性可以正常運作,其他則不確定,大家可以試看看,但是可以確定的是Private是絕對不能用的。

其實這樣就大功告成了,以上3個步驟完成後,就可以像在VB.Net上輕易的在兩個視窗互相使用對方的變數或是物件,不過若是專業的程式,或是具有安全考量的專案的話,就不建議這樣做了,其實這樣的寫法理論上並不符合安全性的要求,至於,基於安全性的方法留到以後再來分享。

PS:範例檔案中有完整的程式,實際秀出功能,有興趣的朋友歡迎參考。

PeterDotNetCS10081801.zip