//声明委托
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是关键的更多相关文章

  1. 附实例!实现iframe父窗体与子窗体的通信

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由前端林子发表于云+社区专栏 本文主要会介绍如何基于MessengerJS,实现iframe父窗体与子窗体间的通信,传递数据信息.同时本 ...

  2. winform里操作打开在panel里的form窗体,子窗体操作同级子窗体或者父窗体的方法

    最近开始了一个winform项目,原先一直都是web项目.遇到个问题,就是在框架内,左侧和中间的main都是用panel来实现的form,就是把form窗体打开到panel里,实现左侧是导航,中间是操 ...

  3. Caliburn.Micro 关闭父窗体打开子窗体

    比如我们在做登录的时候需要关闭父窗体打开子窗体.使用Caliburn.Micro它的时候我们关闭登录窗口的时候主页面也会关闭. 解决方法就是在登录页面的CS里面写 IndexView iv = new ...

  4. C#_父窗体跟子窗体的控件操作

    很多人都苦恼于如何在子窗体中操作主窗体上的控件,或者在主窗体中操作子窗体上的控件.相比较而言,后面稍微简单一些,只要在主窗体中创建子窗体的时候,保留所创建子窗体对象即可. 下面重点介绍前一种,目前常见 ...

  5. C# 关闭子窗体释放子窗体对象问题

    1 在主窗口中实例化子窗口 Form2 f2 = new Form2(); 2 通过按钮来显示子窗口 f2.Show(); 3 关闭子窗口而不释放子窗口对象的方法 protected override ...

  6. 界面主窗体,子窗体的InitializeComponent(构造函数)、Load事件执行顺序

    主窗体,子窗体的InitializeComponent(构造函数).Load事件执行顺序1.执行主窗体定义事件 new函数时,同时执行主窗体构造函数,默认就一个InitializeComponent函 ...

  7. 2016.6.18主窗体、子窗体InitializeComponent()事件、Load事件发生顺序以及SeleChanged事件的发生

    主窗体,子窗体的InitializeComponent(构造函数).Load事件执行顺序 1.主窗体定义事件 new 主窗体() 构造函数进入主窗体InitializeComponent函数,该函数中 ...

  8. C#之菜单控件、主窗体打开子窗体、GroupBox控件使用

    一.背景 一年前有学习过C#,但没有在项目中去实际做APP,重新捡起来应用到项目中.我同事本来做好一个CANOPEN设备管理的界面,由于近期搜索了别人的开发的界面,我觉得有很多东西要重新安排,以及我已 ...

  9. delphi 判断MDI窗体的子窗体是否存在

    //***************************************************************************//函 数名: CreateForm //返 ...

  10. 判断MDI窗体的子窗体是否存在

    //***************************************************************************//函 数名: CreateForm//返 回 ...

随机推荐

  1. pi币--π币--手机离线式挖矿软件--pi中文教程!

    Pi Network派型网络,国外热度很高手机移动式挖矿软件 一个新出的手机移动式挖矿软件,在国外热度很高,国内玩的人目前很少.项目团队成员均来自斯坦福大学,三个创始人斯坦福博士教授,现在处于挖矿第一 ...

  2. js回调函数(callback)(转载)

    学习jquery时,对回调函数感觉很困惑,在晚上找了半天,忽然发现这篇文章很浅显,基本说明了问题.故转载 原文: 自学jquery的时候,看到一英文词(Callback),顿时背部隐隐冒冷汗.迅速go ...

  3. highcharts 代码都对,但是不显示图片

    $('#container').highcharts({ chart: { zoomType: 'xy' }, title: { text: 'Average Monthly Temperature ...

  4. 301跳转与URL转发有什么区别

    在购买域名时,域名本身是不带有www的,但由于域名要通过DNS服务器解析后才可以使用,在这个过程中每一个域名是会指向一个web服务器ip地址,由于在很早之前网站方都会增加一个"www&quo ...

  5. 003-tomcat配置文件-server、tomcat-users

    1.server.xml讲解 位于conf下 <?xml version="1.0" encoding="UTF-8"?> <!-- Serv ...

  6. selenium webdriver常用函数

    from selenium import webdriver driver = webdriver.Ie(executable_path = "e:\\IEDriverServer" ...

  7. 指定JSON.toJSONString中实体类属性的输出顺序

    最近在使用JSON.toJSONString过程中出现实体类的属性与转换之前的顺序不一致 public static void main(String[] args) { Person person ...

  8. 改进后的socket轮子,欢迎挑战

    运行环境.net core2.1 下载地址

  9. JavaScript基本入门02

    目录 JavaScript基础入门 02 条件语句 if 语句 if .. else 语句 switch 结构 循环语句 while 循环 continue 关键字 do...while语句 for ...

  10. C# WindowService 动态修改服务名

    serviceInstaller1中可以设置服务名,描述等 在实际情况中,我们可能需要将Service多开来达到我们的目的,但是安装两次以上会有错误提示,因为服务名已经重复了,这个时候,我们需要动态改 ...