C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了刷新C#datagrid时停止跳转大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我们在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 = 
Sy@L_262_9@Colors.Window;
dgridPosTings.RowsDefaultCellStyle.SELEctionForeColor = 
Sy@L_262_9@Colors.ControlText;

DO CODE

dgridPosTings.RowsDefaultCellStyle.SELEctionBACkColor = 
Sy@L_262_9@Colors.Highlight;
dgridPosTings.RowsDefaultCellStyle.SELEctionForeColor = 
Sy@L_262_9@Colors.HighlightText;

我们相信这个问题是由于数据集刷新时绑定源暂时为空而引起的,然后我们重新导航它再次获取数据.

任何人都可以就如何防止这种不愉快的闪烁发生提出任何想法吗?

非常感谢

科林

解决方法

它可能有点沉重,但一种选择是暂停控制的绘画.一位用户在这里询问如何实现这个目标: How Do I Suspend Painting For a Control and Its’ Children.我在那里使用了选定的答案来实现类似的功能.

大佬总结

以上是大佬教程为你收集整理的刷新C#datagrid时停止跳转全部内容,希望文章能够帮你解决刷新C#datagrid时停止跳转所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。