父窗体的委托,子窗体注册,this.Owner是关键
//声明委托
public delegate void RefreshParentHandler<T>(T obj); //父窗体的委托
public RefreshParentHandler<op_client_add_fee> RefreshParent; //父窗体调用子窗体
frmAddCharge frm = new frmAddCharge(isUp, _SelectRow);
frm.RefreshParent += model =>
{
//方法
};
frm.RefreshIsNext += isnext =>//后台线程工作
{
_isNext = isnext;//是上一条数据还是下一条
StartTask();//开启子线程窗体数据
};
frm.Owner = this;//申明当前窗体是子窗体
frm.ShowDialog(); //子线程传递数据 就是选择查询的数据
#region 上下条数据
/// <summary>
/// 子线程
/// </summary>
private void StartTask()
{
var task = new System.Threading.Tasks.Task(() => Transmit(_isNext));
task.Start();
}
/// <summary>
/// 委托传值上下数据
/// </summary>
private void Transmit(bool isNext)
{
if (isNext)
{
for (int i = _index + ; i < DataSource.Count(); i++)
{
if (ReturnData(i))
{
return;
}
}
}
else
{
for (int i = _index - ; i >= ; i--)
{
if (ReturnData(i))
{
return;
}
}
}
if (RefreshParent != null)
{
RefreshParent(null);
}
}
private bool ReturnData(int index)
{
_SelectRow = gridView1.GetRow(index) as op_client_add_fee;
if (_SelectRow != null)
{
if (Enum.GetName(_SelectRow.fstate.GetType(), _SelectRow.fstate).Equals("未处理"))
{
if (RefreshParent != null)
{
RefreshParent(_SelectRow);
_index = index;
gridView1.ClearSelection();
gridView1.SelectRow(_index);
}
return true;
}
}
return false;
}
#endregion //子窗体注册父窗委托
//父窗只有注册一次,因为父窗资源没有释放,必须清空以前注册的委托
frmExtraCharge frm = (frmExtraCharge)this.Owner;//调用父窗体
frm.RefreshParent = null;
//注册父窗体委托
frm.RefreshParent += row => { GetSelectRow(row, ey, ey2, mess); };
if (RefreshIsNext != null)
RefreshIsNext(isNext);
效果图

父窗体的委托,子窗体注册,this.Owner是关键的更多相关文章
- 附实例!实现iframe父窗体与子窗体的通信
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由前端林子发表于云+社区专栏 本文主要会介绍如何基于MessengerJS,实现iframe父窗体与子窗体间的通信,传递数据信息.同时本 ...
- winform里操作打开在panel里的form窗体,子窗体操作同级子窗体或者父窗体的方法
最近开始了一个winform项目,原先一直都是web项目.遇到个问题,就是在框架内,左侧和中间的main都是用panel来实现的form,就是把form窗体打开到panel里,实现左侧是导航,中间是操 ...
- Caliburn.Micro 关闭父窗体打开子窗体
比如我们在做登录的时候需要关闭父窗体打开子窗体.使用Caliburn.Micro它的时候我们关闭登录窗口的时候主页面也会关闭. 解决方法就是在登录页面的CS里面写 IndexView iv = new ...
- C#_父窗体跟子窗体的控件操作
很多人都苦恼于如何在子窗体中操作主窗体上的控件,或者在主窗体中操作子窗体上的控件.相比较而言,后面稍微简单一些,只要在主窗体中创建子窗体的时候,保留所创建子窗体对象即可. 下面重点介绍前一种,目前常见 ...
- C# 关闭子窗体释放子窗体对象问题
1 在主窗口中实例化子窗口 Form2 f2 = new Form2(); 2 通过按钮来显示子窗口 f2.Show(); 3 关闭子窗口而不释放子窗口对象的方法 protected override ...
- 界面主窗体,子窗体的InitializeComponent(构造函数)、Load事件执行顺序
主窗体,子窗体的InitializeComponent(构造函数).Load事件执行顺序1.执行主窗体定义事件 new函数时,同时执行主窗体构造函数,默认就一个InitializeComponent函 ...
- 2016.6.18主窗体、子窗体InitializeComponent()事件、Load事件发生顺序以及SeleChanged事件的发生
主窗体,子窗体的InitializeComponent(构造函数).Load事件执行顺序 1.主窗体定义事件 new 主窗体() 构造函数进入主窗体InitializeComponent函数,该函数中 ...
- C#之菜单控件、主窗体打开子窗体、GroupBox控件使用
一.背景 一年前有学习过C#,但没有在项目中去实际做APP,重新捡起来应用到项目中.我同事本来做好一个CANOPEN设备管理的界面,由于近期搜索了别人的开发的界面,我觉得有很多东西要重新安排,以及我已 ...
- delphi 判断MDI窗体的子窗体是否存在
//***************************************************************************//函 数名: CreateForm //返 ...
- 判断MDI窗体的子窗体是否存在
//***************************************************************************//函 数名: CreateForm//返 回 ...
随机推荐
- 阿里云 docker image 加速
使用的国内网络下载docker image太困难了,简直龟速,于是上网查看如何加速docker image的下载,没想到网上还真有,看来现在自己的知识圈子太小了,还需要多接触新的知识.找到第一个atu ...
- Mac下mysql服务端密码重置及环境配置
一 停止mysql服务 关闭MySQL服务的操作: 苹果->系统偏好设置->最下边点MySQL 在弹出页面中 关闭mysql服务(点击stop mysql server) 二 进入终端,命 ...
- ajax设置头信息,读取头信息
一.设置头信息 jQuery function GetDateForServiceCustomer(userId) { $.ajax({ url: 'http://*******/api/orders ...
- jeecg中列表点击单号跳入链接
效果如图:点击单号,跳到一个新的页面 1.首先列表给一个自定义的js: <t:dgCol title="业务编号" field="orderCode" ...
- 【Taro全实践】Taro在微信小程序中的生命周期
一.Taro的本身生命周期 生命周期componentWillMount在微信小程序中这一生命周期方法对应页面的onLoad或入口文件app中的onLaunch componentDidMount在微 ...
- HmacSha1加密-java
package com.test; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import org.apache ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-3.热部署在Eclipse和IDE里面的使用
笔记 3.热部署在Eclipse和IDE里面的使用 简介:讲解热部署的好处及使用注意事项,在eclipse里面默认开启,在IDE里面默认关闭 1.增加依赖 & ...
- docker版的zabbix部署
环境准备:一台server端,两台agent端 server端部署zabbix-server和mariadb服务 agent端部署zabbix-agent服务 一.docker容器里下载zabbix和 ...
- delphi读写INI系统配置文件
delphi读写INI系统配置文件 一.调用delphi内建单元 uses System.IniFiles; .使用类TIniFile .类TIniFile的主要方法和函数: {$IFDEF MSWI ...
- springboot-helloworld-idea
1.file-new-project-Spring Initializr-next:输入项目信息-next:web-next-finish 2.创建controller包 3.创建StudyContr ...