日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

父子窗口传递数据

發(fā)布時間:2025/6/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 父子窗口传递数据 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??

父子窗口傳遞數(shù)據(jù)主要通過屬性和委托完成。

對話框主要分為模態(tài)和非模態(tài)兩種對話框。本文參考http://bbs.csdn.net/topics/360140208一文實現(xiàn)這個功能。

父窗口

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace WindowsFormsApplication1 {public partial class MainForm : Form{public MainForm(){InitializeComponent();}private MyDialog m_dlg;private void toolStripButton1_Click(object sender, EventArgs e){MyDialog dlg = new MyDialog(richTextBox1.Text);if (dlg.ShowDialog() == DialogResult.OK){richTextBox1.Text = dlg.TextBoxValue;}}private void toolStripButton2_Click(object sender, EventArgs e){if (m_dlg == null){m_dlg = new MyDialog(richTextBox1.Text);m_dlg.TextBoxChanged += new EventHandler((sender1, e1) =>{ richTextBox1.Text = m_dlg.TextBoxValue; });m_dlg.FormClosed += new FormClosedEventHandler((sender2, e2) => { m_dlg = null; });m_dlg.Show(this);}else{m_dlg.Activate();}}} }

子窗口

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace WindowsFormsApplication1 {public partial class MyDialog : Form{public event EventHandler TextBoxChanged;public string TextBoxValue {get { return textBox1.Text; }set { textBox1.Text = value; } }public MyDialog() : this("") { }public MyDialog(string Param){InitializeComponent();TextBoxValue = Param;}private void textBox1_TextChanged(object sender, EventArgs e){if (TextBoxChanged != null)TextBoxChanged(this, e);}private void button1_Click(object sender, EventArgs e){Close();}} }

模態(tài)傳值的方法是:傳入時可以使用構(gòu)造函數(shù),傳出的時候首先判斷是否用戶是通過確定關(guān)閉的,如果是,那么用屬性傳出。這個做法也是框架庫的做法,比如打開文件對話框。

非模態(tài)的情況略微復(fù)雜:因為我們需要主窗體能和子窗體實時交互,為了同步主窗體和子窗體的數(shù)據(jù),我們用了事件。有人問了,為什么我們不能讓子窗體直接操作主窗體,這是因為考慮到對話框可以被重用,如果讓它直接操作主窗口那么就限制死了這個子窗口只能被某個特定的主窗口調(diào)用。為了解除子窗體對調(diào)用者的耦合,我們使用事件。如果子窗體已經(jīng)被顯示,主窗體再次調(diào)用子窗體,那么通常我們希望激活子窗體而不是再顯示一個。

?參考資料

http://bbs.csdn.net/topics/360140208

?

轉(zhuǎn)載于:https://my.oschina.net/871120/blog/512799

總結(jié)

以上是生活随笔為你收集整理的父子窗口传递数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。