C# Development | 如何在 Form 之間傳遞資料

在設計使用者介面時為了美觀或是使用者使用方便,常需要設計多視窗的功能,因此分享要如何使資料在視窗間傳遞。

Garnett.C 嘎內
OneStep@ATime
Oct 21, 2020

--

前言

最近因為工作上需要寫一些控制類 SDK ( Software Development Kit ) 給其他軟體工程師做機台整合,但在撰寫的時候通常需要邊寫邊做單元測試 ( Unit Testing ) ,所以自己也常常自己寫一些簡單的介面來測試,但覺得既然要寫介面那也要點一些寫介面的技能樹,因此誕生了這一篇。

簡介

一般常用在 From 間傳遞資料的方法有兩個,其中一種是利用建構子 ( Constructors ),在創建視窗時就將資料帶入;另一則是利用事件 ( Event )來傳遞資料。例用建構子傳遞需要在視窗開啟前就知道所有資料,而利用事件則是任何時候都可傳遞;但例用建構子較直觀也比較簡單,利用事件傳遞則是需要利用委派執行,各有利弊。

Get Start - Method 1 : 使用建構子 ( Constructors ) 傳遞

1. 建立一個專案 ( 本文是用 Visual Studio 2015, .NET Framework 4.5.2, 專案類型為 Windows Form Application )。在專案內新增一個 Windows Form ( Form2 ),並分別在 Form1 新增一個 Button ( Button1 );Form2 內新增一個 Label ( label1 )。

2. 先看 Form2 程式碼,因要先將建構子的內容寫好,當建構 Form2 時將從 Form1 傳過來的值用 label1 顯示。

Form2 source code 彩色版 :)

2. 以下為 Form1 程式碼,當按下 button1 時會 new Form2 並將資料傳入 Form2 中然後顯示。

Form1 source code 彩色版 :)

執行結果 - 使用建構子 ( Constructors ) 傳遞

執行後當按下 Form1 上的 button1 會跳出 Form2,Form2 上的 label 顯示為從 Form1 傳遞的資料。

Get Start - Method 2: 使用事件( Event ) 傳遞

1. 建立一個專案 ( 本文是用 Visual Studio 2015, .NET Framework 4.5.2, 專案類型為 Windows Form Application )。在專案內新增一個 Windows Form ( Form2 ),並分別在 Form1 及 Form2 內各新增一個 Button ( Button1 & Button2 )。

2. 先來看 From2 程式碼,因為需先在 Form2 class 內先宣告委派 ( delegate ) 及事件 ( event )。當 Form2 內 Button2 按下時觸發 event 傳遞 string 資料至 Form1。

Form2 source code 彩色版 :)

3. 以下為 Form1 程式碼 ,當按下 button1 時 new 出 Form2 並顯示,並宣告承接委派的方法。然後在承接委派的方法內使用 MessageBox 將接收到的資料顯示出來。

Form1 source code 彩色版 :)

執行結果 - 使用事件( Event ) 傳遞

當按下 Form1 上的 button1 後會跳出 Form2,接著按下 Form2 上的 button2 則會觸發 eventForm2trigger 事件並執行 triggered 這個 function ,將從 Form2 傳至 Form1 的資料用 MessageBox 顯示出來。

尾聲

以上兩種方法都十分常用,所以在這邊分享給各位,希望有所幫助。

最近聽了一些厲害的人的分享,發現其實就算是再厲害的人也都是從新手階段 baby steps 慢慢進步,最後才爬到現在的高度。所以定好你的目標,慢慢的進步,未來的某天你會發現你其實比你想像中的厲害,希望我們能一起加油。

--

--

Garnett.C 嘎內
OneStep@ATime

學店畢業末班生,前輪班星人工程師,現在轉任可以慢慢實現自己夢想的工程師工作。喜歡閱讀及分享,踏上追尋夢想的生命旅程~