winform程序两个窗体间同步数据(二): 子窗体和线程实现

    xiaoxiao2021-03-26  25

    一 : 显示效果

    二 代码

    1  入口程序

    using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace WindowsFormsApplication1 { static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new ParentFrm());//启动父窗体 } } } 2 父窗体

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class ParentFrm : Form { public ParentFrm() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e)//点击事件 { ChildFrm childFrm = new ChildFrm(); childFrm.Show();//显示子窗体 Thread thread = new Thread(() => { while (true) { this.TbParent.Invoke(new Action(() => { this.TbParent.Text = childFrm.str; }));//夸线程访问,取出子窗体(childFrm)的属性值(str)放入父窗体的TEXTBOX控件中显示 } }); thread.Start();//启动线程 } } } 3 子窗体

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class ChildFrm : Form { public string str; public ChildFrm() { InitializeComponent(); } private void TbChild_TextChanged(object sender, EventArgs e) { this.str = this.TbChild.Text;//将用户输入到子窗体TEXTBOX控件中的内容放入到子窗体的属性值(str)里 } } }

    三 问题

    是否可以去掉多线程?

    多线程很像之前的web 聊天程序里的长轮询,父窗口不停地去请请求子窗口里的数据。如果改成子窗体主动发送数据就可以去掉多线程?

    转载请注明原文地址: https://ju.6miu.com/read-650343.html

    最新回复(0)