在前几天学习了一种方法,通过创建委托变量,然后给委托注册事件达到子窗体点击按钮切换数据显示的同时,父窗体的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);
}
}