刷新C#datagrid时停止跳转
发布时间:2020-12-16 07:27:41 所属栏目:百科 来源:网络整理
导读:我们在datagrids上显示数据,这些数据绑定到数据集,数据集又从服务器上的Progress数据库提供.在处理过程中,我们需要对数据集进行更改并从服务器刷新它的值.到目前为止,一切都很好,没有问题. 问题是,当我们回到新数据时,我们希望数据网格中的选择保持在之前的
我们在datagrids上显示数据,这些数据绑定到数据集,数据集又从服务器上的Progress数据库提供.在处理过程中,我们需要对数据集进行更改并从服务器刷新它的值.到目前为止,一切都很好,没有问题.
问题是,当我们回到新数据时,我们希望数据网格中的选择保持在之前的同一行上.我们使用以下代码进行了管理: int iPostingPos = dgridPostings.CurrentRow.Index; // process data on server dataContTranMatch.RunBoProcedure(dataContTranMatch.BoProcedure,transactionMatchingDataSet); // Reload Data LoadData(); if (iPostingPos > ttPOSTingsRowBindingSource.Count) { iPostingPos = ttPOSTingsRowBindingSource.Count; } if (ttPOSTingsRowBindingSource.Count > 0) { ttPOSTingsRowBindingSource.Position = iPostingPos; dgridPostings.Rows[iPostingPos].Selected = true; } 这是有效的,但我们让选定的线在屏幕上跳跃,这真的让用户烦恼. 例如,如果选择第7行,然后运行此代码,则选择第7行,然后选择跳转到第0行,然后跳回第7行.这是不可接受的. 为了解决这个问题,我们尝试将以上代码包含在以下附加行中: chTableLayoutPanel1.SuspendLayout(); *DO CODE* chTableLayoutPanel1.ResumeLayout(); 但这没有帮助. 到目前为止,我们能够达到的最可接受的解决方案是更改选择的颜色,以便您无法看到它,让它跳跃,然后将颜色恢复原样.这使得闪烁更容易被接受. dgridPostings.RowsDefaultCellStyle.SelectionBackColor = SystemColors.Window; dgridPostings.RowsDefaultCellStyle.SelectionForeColor = SystemColors.ControlText; DO CODE dgridPostings.RowsDefaultCellStyle.SelectionBackColor = SystemColors.Highlight; dgridPostings.RowsDefaultCellStyle.SelectionForeColor = SystemColors.HighlightText; 我们相信这个问题是由于数据集刷新时绑定源暂时为空而引起的,然后我们重新导航它再次获取数据. 任何人都可以就如何防止这种不愉快的闪烁发生提出任何想法吗? 非常感谢 科林 解决方法
它可能有点沉重,但一种选择是暂停控制的绘画.一位用户在这里询问如何实现这个目标:
How Do I Suspend Painting For a Control and Its’ Children.我在那里使用了选定的答案来实现类似的功能.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |