日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

父子窗口传递数据

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

為什么80%的碼農都做不了架構師?>>> ??

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

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

父窗口

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();}} }

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

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

?參考資料

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

?

轉載于:https://my.oschina.net/871120/blog/512799

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。