`
flon
  • 浏览: 12401 次
文章分类
社区版块
存档分类
最新评论

C#通过委托和异步调用实现窗体间的通讯

 
阅读更多

遇到一个网友提问说两个窗体内容同步的问题,这个测试下没有,主要内涵还是委托与异步调用的应用问题
这样处理
:在子窗体中声明一个父窗体的类型变量form1;
在子窗体实例化时添加form1=this;
在父窗体中定义一个更新父窗体内容的public函数
在子窗体中通过委托的形式调用form1中定义的函数具体代码如下
-------------------------窗体一的代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form1 : Form
{

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();

form2.form1 = this;
form2.Show();
}
public void myupdate(string mystr)
{
this.textBox1.Text = mystr;
}
}
}

----------------------------窗体二的代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form2 : Form
{
public Form1 form1;
public Form2()
{
InitializeComponent();
}
public delegate void update(string txt);//声明委托




private void textBox1_TextChanged(object sender, EventArgs e)
{
string strx = textBox1.Text;

if (!this.InvokeRequired)
{
update updatetxt = new update(form1.myupdate);//委托实例化
IAsyncResult ix = this.BeginInvoke(updatetxt, new object[] { strx });//异步调用
try
{
this.EndInvoke(ix);
}
catch
{ }
}

}

}
分享到:
评论

相关推荐

    通过委托和异步调用实现窗体间的通讯

    C#,委托,异步,调用.窗体,通讯,介绍窗体间通讯的一种较好方法

    c#利用委托来实现关闭子窗口通知父窗口执行方法

    c#利用委托来实现关闭子窗口通知父窗口执行 c#利用委托实现关闭子窗口通知父窗口 c#利用委托关闭子窗口通知父窗口 c#利用委托来实现关闭子窗口通知父窗口执行 c#利用委托实现关闭子窗口通知父窗口 c#利用委托关闭子...

    winform异步进度条 主窗体耗时方法体内调用,弹出进度窗体

    在主窗体耗时方法体内调用,弹出进度窗体。调用4步骤 1.ProgressBarService.CreateBarForm("计划导出", "数据就绪,准备导出数据...", count); //创建进度窗口并写入提示文字 2.ProgressBarService....

    C# winform简单易用的异步加载Loading效果

    winform的一个简单易用异步加载等待效果,调用方式: this.AsyncWaitDo(delegate{ //异步等待操作}, delegate{//回调操作}); this是要进行异步等待的窗体

    C# WINFORM 异步 弹出请稍等提示

    在加载数据时,如果数据过多,可以弹出一个请稍等的窗体,当数据加载完毕后把这个窗体给关掉,主要采用BackgroundWorker这个类进行操作

    WinForm进度条的2种异步实现方式

    在WinForm中,比如一些文件传输和一些费时的操作,如果处理不好就会造成“假死”的情况,为此我们可以采用进度条进行友好提示。 BackgroundWorker类是.net 2.0里新增加的一个类,对于需要长时间操作而不需要用户长...

    c# winform异步不卡界面的实现方法

    快速阅读 如何在winform程序中,让界面不再卡死。 关于委托和AsyncCallback的使用。 界面卡死的原因是因为耗时任务的计算...定义一个委托实现子线程更新主线程 public delegate void UpdateText(string message); pu

    VB.Net-C#多线程Thread-代理委托delegate编程

    WebBrowser控件-弹出新窗体和关闭窗口.txt WebBrowser控件的简单应用2.txt 多线程为基于.NET的应用程序实现响应迅速的用户.txt 浅述WinForm多线程编程与Control.Invoke的应用.txt 微软.Net开发中的多线程编程总结....

    CLR.via.C#.(中文第3版)(自制详细书签)Part2

    22.6.3 Microsoft ASP.NET Web窗体和XML Web服务应用程序 22.6.4 Microsoft SQL Server 22.6.5 更多的用法只局限于你自己的想象力 22.7 高级宿主控制 22.7.1 使用托管代码管理CLR 22.7.2 编写健壮的宿主应用...

    C#连接操作MySQL数据库进行添加、修改、删除、查询、批量导入、异步处理等操作的演示代码

    鉴于MySQL数据库的流行与强大,决定多学习...同时实现了数据库查询,BindingSource绑定控件、BindingNavigator导航控件绑定,批量数据使用BackgroundWorking异步导入功能,及进度条动态显示数据库批量操作进度等功能。

    C#面向对象编程 源码

    共22章,全面详细地解说了C#的技术要点,包括C#语言基础、C#的面向对象特征、异常处理、委托与事件、集合、泛型、字符串与正则表达式、特性、反射、程序集与版本控制、.NET框架的内存管理、多线程、Windows窗体、GDI...

    CLR.via.C#.(中文第3版)(自制详细书签)

    22.6.3 Microsoft ASP.NET Web窗体和XML Web服务应用程序 22.6.4 Microsoft SQL Server 22.6.5 更多的用法只局限于你自己的想象力 22.7 高级宿主控制 22.7.1 使用托管代码管理CLR 22.7.2 编写健壮的宿主应用...

    Visual.C#.编程精彩百例

    实例52 在C#中快速调用Windows API 实例53 摄氏温度与华氏温度间相互转换(1) 实例54 摄氏温度与华氏温度间相互转换(2) 实例55 使用FileSystemWatcher组件监视Web服务器 实例56 由颜色名字产生对应颜色 实例...

Global site tag (gtag.js) - Google Analytics