为什么80%的码农都做不了架构师?>>>   

举例,现在有两个窗体,SelectForm窗体查询信息集合,使用DataGridview显示信息集合,EditForm窗体添加和修改信息,EditForm编辑完成并且关闭后,定位SelectForm的DataGridview编辑的那一行,现在以修改信息为例,首先在EditForm窗体中声明一个事件

public event EventHandler AfterEditingBillsNumber;

然后在EditForm关闭时,或者你编辑信息完成后,把你想要传的值这样写

AfterEditingBillsNumber(label.Text, EventArgs.Empty);

回到SelectForm窗体,你肯定要在SelectForm写这样几行代码

EditForm form=new EditForm();
form.ShowDialog();

那么,现在这几行代码改成这样

EditForm form=new EditForm();
form.AfterEditingBillsNumber += new EventHandler(this.AfterEditingBillsNumber );
form.ShowDialog();

然后在本窗体中写上AfterEditingBillsNumber事件的处理方法

private void AfterEditingBillsNumber(object sender, EventArgs e)
{string focusStr = sender as string;if (!string.IsNullOrEmpty(focusStr)){SelectBills();SetFocusOnEditing(dataGridView1, "ColumnBillsNumber", "OperationsDate", focusStr);}
}
 /// <summary>/// 设置DataGridView编辑前的焦点,写的不好,还望海涵,望大神改进。/// <param name="dgv">DataGridView控件</param>/// <param name="ColumnName">用于定位的列名</param>/// <param name="VisibleCell">可见单元,大部分用于定位的列都是隐藏的,所以需要一个可见的单元格进行光标定位</param>/// <param name="SelectedValue">用于定位的值</param>/// </summary>public void SetFocusOnEditing(DataGridView dgv, string ColumnName, string VisibleCell, string SelectedValue){try{int j = 0;//计数器foreach (DataGridViewRow dr in dgv.Rows){if (dr.Cells[ColumnName].Value.ToString() == SelectedValue){dgv.FirstDisplayedScrollingRowIndex = j;//将当前找到的行设置到第一行dgv.CurrentCell = dr.Cells[VisibleCell];//去掉其他行的选择状态并将当前行的第一个单元格置为选择状态dr.Selected = true;//选择当前整行return;}j++;}}catch (Exception ex){MsgBox.ShowError(ex.Message);}}


转载于:https://my.oschina.net/dongri/blog/610896

利用事件进行窗体间传值相关推荐

  1. C# 利用委托事件进行窗体间的传值

    引言: 窗体间传值是每个学习WinForm新手的常见问题,最初级的方法就是 在窗体中先获取到要接受值窗体.然后通过.得到某个空间或者属性,直接赋值,这个需要接收放的窗体属性或者空间必须是public ...

  2. Pyqt 窗体间传值

    窗体间传值网上有好多方法,比如新建文件,先将子类窗体的数据传到文件中,父窗体读取文件.  Signal&Slot机制进行传值 等等 在这里,我们就举个采用apply方法:Signal& ...

  3. 利用委托 实现窗体间通信,非原创

    copy自:https://www.cnblogs.com/hugoNB/p/7130562.html,这个作者写的浅显易懂,就复制下来自己看 实现过程: 这里主要是用到委托实现,所以主要描述一下委托 ...

  4. C#利用委托实现窗体间的值传递

    C#利用委托实现窗体间的值传递 A.网上有很多方法,大家可搜一下,都可用. B.这里只是说明下是只利用委托,学习基本的委托运用. 方法如下: 1.C#建立一个默认工程,默认窗体Form1 2.加入一个 ...

  5. 构造函数实现窗体间传值

    ///Form1.cs the form contains a textbox and a button using System; using System.Collections.Generic; ...

  6. C# 窗体间传值(使用委托与自定义事件)

    using System; using System.Drawing; using System.Windows.Forms; namespace 跨窗体调用控件 { public partial c ...

  7. (C#)WinForm窗体间传值

    1.通过构造函数 特点:传值是单向的(不可以互相传值),实现简单 实现代码如下: 在窗体Form2中 int value1; string value2; public Form2 ( int val ...

  8. 用委托实现窗体间传值

    1.新建一个工程.在Form1中添加一个Label和一个Button.新建一个事件类,让它有一个string 类型的属性,用于传值. 1 ///ReturnValueEventArgs.cs  2 u ...

  9. Winfrom窗体间传值

    1.通过tag属性传输,tag属性是存储与空间密切相关的数据.比如登陆界面的数据传输给主界面. 子窗体                                                 ...

最新文章

  1. python基础知识整理 第一节:入门记录(包含代码与执行结果)
  2. 权限表管理之更新权限表数据
  3. python 安装lxml
  4. Realm Configuration HOW-TO--官方
  5. 3.1HTML5样式的使用
  6. XP系统安装SQL2000企业版开启1433端口
  7. VB案例:DAO使用示例1
  8. 将Windows8或WindowsServer2012装在VHD上
  9. abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二)
  10. HDU1210 Eddy's 洗牌问题【递推函数+模拟】
  11. 09年杀毒软件大比拼
  12. 传智php网课,传智自动刷网课视频工具
  13. 测试用例(等价类划分法)
  14. GIMP小波分解处理照片
  15. 华为网络设备介绍及基础配置命令
  16. 淘宝无人直播赚钱模式
  17. %3cp%3e 修改 值 html,UEditor在JavaWeb中的应用
  18. vue全局组件自动注册
  19. 【Error2013:2013 lost connection to MYSQL server在处理大量数据运行中报错解决方法】
  20. ubuntu18.04关闭输入法浮动窗

热门文章

  1. Restorator V2009 单文件版
  2. Hadoop MapReduce编程 API入门系列之wordcount版本2(六)
  3. 研究Mysql优化得出一些建设性的方案
  4. client intended to send too large body
  5. 获取指定个数指定范围的随机数
  6. 大型企业网络配置系列课程详解(第一版)发布
  7. PHP 设计模式之策略模式
  8. 2018年12月2526日
  9. windows 下win+r无效
  10. Mysql Group by 分组取最小的实现方法