編寫WinowsForm應用程序時,實現兩個窗體之間相互傳遞值的方法其實很簡單。以下用一個例子說明:在名為FormMain主窗體運行過程中利用名為FormInfo窗體,獲取用戶輸入信息,並將這些信息返回給FormMain
1. FormMain和FormInfo
點擊“修改...”按鈕,顯示FormInfo
2. 設置FormInfo中buttonOK和buttonCancal的屬性
3. FormMain代碼
public partial class FormMain : Form { public FormMain() { InitializeComponent(); } private void buttonInfo_Click(object sender, EventArgs e) { // 實例化FormInfo,並傳入待修改初值 var formInfo = new FormInfo(labelInfo.Text); // 以對話框方式顯示FormInfo if (formInfo.ShowDialog() == DialogResult.OK) { // 如果點擊了FromInfo的“確定”按鈕,獲取修改后的信息並顯示 labelInfo.Text = formInfo.Information; } } }
4. FormInfo代碼
public partial class FormInfo : Form { public FormInfo() { InitializeComponent(); } /// <summary> /// 構造函數 /// </summary> /// <param name="info">待修改的信息</param> public FormInfo(string info) : this() { // 在TextBox中顯示信息初值 textBoxInfo.Text = info; } /// <summary> /// 獲取修改后的信息 /// </summary> public string Information { get { return textBoxInfo.Text; } } }
5. 運行效果
===========
知識點延伸
知識點1:FormMain和FormInfo是對象。兩窗體之間的信息交換,就是兩個對象之間的信息交換。很多人迷失在Visual Studio可視化編程界面,編程時把這點拋到九霄雲外啦!
知識點2:在FormMain中buttonOK事件處理函數中,很多人錯誤地認為FormInfo關閉后,它的實例formInfo就不存在了。其實,按照C#的規定,這個實例一直存在,直到從函數中退出才會銷毀,交給垃圾回收!