gpt4 book ai didi

c# - 刷新 C# 数据网格时停止跳行

转载 作者:行者123 更新时间:2023-11-30 12:33:59 25 4
gpt4 key购买 nike

我们在数据网格上显示我们的数据,绑定(bind)到数据集,而数据集又从服务器上的 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 行。这是 Not Acceptable 。

为了解决这个问题,我们尝试将上述代码包含在以下附加行中:

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;

我们认为问题是由于绑定(bind)源在刷新数据集时暂时为空引起的,然后我们重新导航一个它再次包含数据。

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

非常感谢

科林

最佳答案

这可能有点笨手笨脚,但一种选择是暂停控件的绘制。用户在这里询问如何实现此目的:How Do I Suspend Painting For a Control and Its' Children .我在那里使用了选定的答案来实现类似的目标。

关于c# - 刷新 C# 数据网格时停止跳行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8064538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com