WinForm中窗體間的數據傳遞(一)


窗體間的數據傳遞的幾種方法:

1.通過子窗體的Tag屬性

2.借助第三方的一個靜態變量

3.通過父窗體的Tag屬性

局限性:必須得有一個窗體已經關閉,數據才能傳遞過去

那如果,我們想在都不關閉任何窗體的情況下進行數據傳遞,該如何操作?

在我的另外一篇博文中(WinForm中窗體間的數據傳遞(二))可以借助向外引發事件來解決這個問題

例子截圖如下:

 

當用戶點擊子窗口的“添加”按鈕的時候的代碼:

private void button1_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.OK;
            //創建一個Info對象
            User info = new User();
            //將數據保存到Info對象中
            info.UserName = textBox3.Text;
            info.PassWord = textBox4.Text;
            //問題:如何將info對象中的信息傳遞給主窗口
            //方案一:將對象info保存到子窗口的Tag屬性中,則從父窗口中可以通過實例化的子窗口對象拿到info對象信息
            //this.Tag = info;
            //方案二:將對象info保存到一個靜態變量中
            //第三方.user = info;
            //方案三:將對象info保存到父窗口的Tag屬性中
            MainFrm mainfrm = this.Owner as MainFrm;
            mainfrm.Tag = info;
        }

 

將用戶點擊主窗口中的“添加信息”的代碼:

private void 添加用戶ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmUser userDialog = new FrmUser();
            if (userDialog.ShowDialog() == DialogResult.OK)
            //if (userDialog.ShowDialog(this) == DialogResult.OK)
            {
                //方案一:通過子窗口的Tag屬性進行窗體間的數據傳遞
                User user=userDialog.Tag as User;
                //方案二:借助第三方的一個靜態屬性進行數據傳遞
                User user = 第三方.user;
                //方案三:通過父窗口的Tag屬性進行窗體間的數據傳遞,注意傳遞一個this參數給userDialog.ShowDialog()
                User user = this.Tag as User;
                MessageBox.Show("用戶名:"+user.UserName+"\r\n密碼:" + user.PassWord);
            }
        }

 其中,得特別注意第三種方案,當將要傳遞的信息保存到“主窗口”的Tag中的時候,在顯示“子窗口”的時候需要通過ShowDialog傳遞一個參數:this,用以設置當前窗體為子窗體的Owner

原創文章,轉載請注明出處:http://www.cnblogs.com/hongfei/archive/2012/12/17/2822137.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 WinForm中窗體間的數據傳遞(二) C#中兩個窗體間的數據傳遞 C#不同窗體間通信,數據傳遞 ANDROID中ACTIVITY間的數據傳遞 winform窗體間傳值 C#如何實現窗體間數據傳遞 QT 窗體之間(MainWindow 和 Dialog)數據傳遞