在前几天学习了一种方法,通过创建委托变量,然后给委托注册事件达到子窗体点击按钮切换数据显示的同时,父窗体的GridView的焦点行随着改变。
今天找到另一个方法,不需要去使用委托,也不用从父窗体传实体列表过来。
具体实现需要知道:
1>获取父窗体
2>取得GridView对象
3>父窗体焦点改变,取得当前焦点行的数据(实体Model)
4>子窗体绑定实体Model数据显示,这就达到了同步显示的效果。
代码实现:
/// <summary> /// 同步父子窗体动态效果显示 /// </summary> /// <param name="i">移动条数</param> private void MoveShow(int i) { try { //获取父窗体 NewsForm news = this.Owner.ActiveMdiChild as NewsForm; if (news != null) { //取得GridView var gv = news.gdNews.MainView as GridView; if (gv != null) { //焦点变化 int rowHandle = gv.FocusedRowHandle + i; if (rowHandle >= 0 && rowHandle < gv.RowCount) { //改变焦点 gv.FocusedRowHandle = rowHandle; //多选条件时,取消选中 gv.ClearSelection(); //选中当前焦点行 gv.SelectRow(rowHandle); //获取当前选中行的实体对象 newsDto = GetCurrentRowObject<NewsDto>(gv); if (newsDto != null) { //赋值方法,给子窗体绑定实体中的值显示 ShowContent(); } } } } } catch (Exception ex) { MessageBoxErrorShow(ex); } }