两个子窗体间的传值和函数调用
来源:互联网 发布:dv带采集软件 编辑:程序博客网 时间:2024/06/11 05:53
折磨了一天半的难题终于解决了,趁热打铁写出来给有同样困惑的小伙伴们参考一下!
首先,问题描述:有三个窗体,MainForm(父窗体)、CataForm(子窗体)、TextForm(子窗体),在CataForm窗体中要点击一个控件执行操作得出一个string,然后需要把这个string传给TextForm,并执行刷新函数(把string传给控件,更新控件内容)!
问题难点分析:CataForm 和TextForm都是在MainForm里new出来的唯一窗体,所以要在CataForm窗体里给TextForm传值或是调用其方法是不能通过new一个TextForm的(自然,给TextForm弄个public属性这个方法就得pass了),那static呢?不好意思TextForm的刷新函数里有个控件的使用,所以static的方法也就pass了。
解题思路:CataForm和TextForm之间唯一的关联就只剩下:它们都是MainForm的子窗体(找到突破口了)。***委托(或事件)***,这就是救星,有木有!!!在CataForm里定义一个public委托,在MainForm里new完CataForm之后就给CataForm的委托帮上一个方法Send(string),这个方法的作用就是把string传给TextForm,然后在CataForm里得到string的时候调用委托,这样一来:CataForm得到string------->执行MainForm方法Send(string)--------->TextForm得到string,刷新内容!
贴代码:(代码中我使用的是事件,你懂得!)
class MainForm
{
CataForm cata = new CataForm();
TextForm text = new TextForm();
public MainForm(){}
private void MainForm_Load(object sender, EventArgs e)
{
cata.Path += new CataForm.PathEventHandler(Send);//事件注册,直接就把cata中得到的path传到Send()了。
}
private void Send(string paht)
{
text.Path = path;
}
}
class CataForm
{
public delegate void PathEventHandler(string path);
public event PathEventHandler Path;
private void xxx()
{
计算或者……得到了path这个东东。
if(Path != null)
{
Path(path);
}
}
}
class TextForm
{
private string path = "";
public string Path
{
get{return path;};
set{
path = value;
Refresh(path);//为了实现自动刷新,我就把刷新函数放这儿了,不知道好不好?
}
}
private void Refresh(string path)
{
path值都来了,你就随便用吧!
}
}
这样,调用CataForm中的xxx(),TextForm中的控件内容就直接刷新了!
第一次写博客,不知道思路是否清晰,小伙伴们谅解!!!
- 两个子窗体间的传值和函数调用
- js子窗体调用父窗体函数的问题
- Web所有父窗体与子窗体的交互方法列举(子调用父窗体函数)
- Web所有父窗体与子窗体的交互方法列举(子调用父窗体函数)
- Web所有父窗体与子窗体的交互方法列举(子调用父窗体函数)
- iframe父窗体和子窗体的相互调用
- iframe父窗体和子窗体的相互调用
- c# winform 子窗体更新父窗体,调用父窗体的函数
- 子窗体如何传值到父窗体并调用父窗体的函数
- C#利用子窗体中的构造函数 (实现了父窗体给子窗体的传值,但是子窗体的值回传暂未实现)
- C#多项目间的窗体调用和传值
- c# 中释放打开图片和 子窗体调用父窗体函数
- C#----子窗体调用子窗体,但调用的子窗体仍属于父窗体
- 父窗体打开子窗体,子窗体在打开孙子窗体的传值问题
- winform程序两个窗体间同步数据(二): 子窗体和线程实现
- Iframe 子窗体调用父窗体函数、变量
- 父窗体和子窗体之间传值
- showModalDialog在父窗体和子窗体之间传值
- 动态规划_钢条切割最优策略
- Oracle 的数据导入导出及 Sql Loader (sqlldr) 的用法
- Centos及linux系统安装VirtualBox虚拟机增强包
- Mac OS X中Apache开启ssl
- Objective-C相关Category的收集
- 两个子窗体间的传值和函数调用
- nginx相关书籍
- hdu 5040 Instrusive 最短路
- oracle中flashback闪回区常存储的内容
- 生活丰富便捷
- 黑马程序员——多态
- 【面向对象程序设计之CRC】CRC卡及其应用
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
- android--广播、服务、数据库、通知、包原理图