MR的控制数据区域刷新的问题
现有一程序,旧程序是用的DenpyoMan做的。移行到MR之后,想要控制数据区域的刷新。
因为旧程序通过Ctl.Redraw=False就可以让数据区域不刷新了。
但是MR的ResumeLayout并不能解决这个问题。
另:由于这块内容是通过循环来判断数据的整合性,用到了大量的共通函数,
所以通过修改逻辑来控制数据不刷新并不是一个简单的改修。
有没有好的方法,控制不刷新表示内容。
默认情况下,刷新是异步的,循环操作数据不应该会导致频繁刷新。
不知道什么情况下会遇到频繁刷新的问题,是否可以上传一个工程文件来复现这个问题呢? 本帖最后由 sxyweiren 于 2018-1-31 11:08 编辑
robert 发表于 2018-1-25 17:01
默认情况下,刷新是异步的,循环操作数据不应该会导致频繁刷新。
不知道什么情况下会遇到频繁刷新的问题, ...
循环数据的同时,设定了CurrentCellPosition来移动单元格。
旧版的DenpyoMan里面用的是ActiveCellKey来移动。
因为涉及到的逻辑代码比较多,所以希望也是通过控制画面刷新来实现相同的效果。
大约有10000条数据的时候,如果每一条都涉及到跟DB里面的值作对比,就会看到数据一直在刷新。
但是DenpyoMan类似于Spread,只是滚动条在动,数据并没有刷新。
滚动条的刷新不刷新都不是问题,能不能数据区域不刷新?
sxyweiren 发表于 2018-1-31 11:06
循环数据的同时,设定了CurrentCellPosition来移动单元格。
旧版的DenpyoMan里面用的是ActiveCellKey来 ...
您好,类似中问题需要demo来验证重现您的问题,这样我们能产品人员才能帮您调查问题,谢谢。 JeffryLI 发表于 2018-1-31 14:42
您好,类似中问题需要demo来验证重现您的问题,这样我们能产品人员才能帮您调查问题,谢谢。
按照我的说明应该是可以做出Demo来的啊.
因为我现在公司的电脑处于保密隔离的开发间.
不能上网,不能以任何方式与外界通信,所以我很难提供Demo的.
1,创建一个MultiRow
2,五列一万行
3,Button压下,进行循环Check
Mr.SuspendLayout
for inci as integer =1 to 10000
Mr.CurrentCellPosition = New CellPosition(inci-1,0)
判断逻辑,随便写点去单元格的值的判断就行。
Next
Mr.ResumeLayout
跑起来后,就会发现单元格一直往下移动。
因为是盲打出来的,所以拼写方面可能有点问题。
反正就是这个思路。
sxyweiren 发表于 2018-2-7 10:49
按照我的说明应该是可以做出Demo来的啊.
因为我现在公司的电脑处于保密隔离的开发间.
不能上网,不能以 ...
好的,收到了,我和研发确认下,稍后给您回复。 您好,刷新是滚动引起的,可以通过代码截止滚动,提高性能
bool suspendRefresh = false;
private void GcMultiRow_Scroll(object sender, ScrollEventArgs e)
{
if (suspendRefresh)
{
e.NewValue = e.OldValue;
}
}
private void button1_Click(object sender, EventArgs e)
{
suspendRefresh = true;
for (int i = 0; i < 1000; i++)
{
g.CurrentCellPosition = new CellPosition(i, 0);
}
suspendRefresh = false;
}
页:
[1]