欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#实现子窗体与父窗体通信方法实例总结

程序员文章站 2023-11-18 21:18:22
本文实例总结了c#子窗体与父窗体通信方法。分享给大家供大家参考。具体如下: 【第一种方法:】 第一步: 创建接口iform,父窗体继承这个接口 publ...

本文实例总结了c#子窗体与父窗体通信方法。分享给大家供大家参考。具体如下:

【第一种方法:】

第一步:

创建接口iform,父窗体继承这个接口

public interface iform
{
    void refreshform();
}

第二步:

父窗体实现接口中的方法,在实现接口的方法中写入刷新代码

form2 f = new form2();
f.owner = this;
f.showdialog();

第三步:

在子窗体中调用,刷新的方法

复制代码 代码如下:
(this.owner as iform).refreshform();

【第二种方法:】

1.父窗体中定义刷新的方法refreshform()
2.在点击的事件show出子窗体的时候,代码如下:

form form=new form();
form.show(this);

3.在子窗体的点击事件中,代码如下:

复制代码 代码如下:
(this.owner as form).refreshform();

【第三种方法:】

通过事件解决方法:
子窗体中定义:

public delegate void sendmessage(string message); 
public event sendmessage sendto ;

主窗体:

childform frm = new childform(); 
frm.sendto += new childform.sendmessage(sendargs); 
frm.showdialog(this);
private void sendargs(string message)//主窗体接收消息 
{messagebox.show( "主窗体已收到消息: " + message);}

子窗体测试:

复制代码 代码如下:
if (this.sendto != null) this.sendto( "主窗体收到了吗? ");

【第四种方法:】

通过引用:

下例演示怎样通过引用类型实现你的功能:
子窗体中定义:

复制代码 代码如下:
protected mainform parentfrom = null;//主窗体

新构造函数:

public childform(mainform parent) 
{ 
initializecomponent();
this.parentfrom = parent;//引用 
}

主窗体中某click:

childform frm = new childform(this); 
frm.showdialog(this);

子窗体测试:

void ...click(....) 
{ 
this.text = "测试引用 "; 
if (this.parentfrom != null) this.parentfrom.text += "- " + this.text;//....... 
}

希望本文所述对大家的c#程序设计有所帮助。