sxyweiren 发表于 2018-1-19 14:57:38

MR的控制数据区域刷新的问题

现有一程序,旧程序是用的DenpyoMan做的。

移行到MR之后,想要控制数据区域的刷新。
因为旧程序通过Ctl.Redraw=False就可以让数据区域不刷新了。
但是MR的ResumeLayout并不能解决这个问题。

另:由于这块内容是通过循环来判断数据的整合性,用到了大量的共通函数,
所以通过修改逻辑来控制数据不刷新并不是一个简单的改修。

有没有好的方法,控制不刷新表示内容。

robert 发表于 2018-1-25 17:01:43

默认情况下,刷新是异步的,循环操作数据不应该会导致频繁刷新。
不知道什么情况下会遇到频繁刷新的问题,是否可以上传一个工程文件来复现这个问题呢?

sxyweiren 发表于 2018-1-31 11:06:28

本帖最后由 sxyweiren 于 2018-1-31 11:08 编辑

robert 发表于 2018-1-25 17:01
默认情况下,刷新是异步的,循环操作数据不应该会导致频繁刷新。
不知道什么情况下会遇到频繁刷新的问题, ...
循环数据的同时,设定了CurrentCellPosition来移动单元格。
旧版的DenpyoMan里面用的是ActiveCellKey来移动。
因为涉及到的逻辑代码比较多,所以希望也是通过控制画面刷新来实现相同的效果。

大约有10000条数据的时候,如果每一条都涉及到跟DB里面的值作对比,就会看到数据一直在刷新。
但是DenpyoMan类似于Spread,只是滚动条在动,数据并没有刷新。
滚动条的刷新不刷新都不是问题,能不能数据区域不刷新?

JeffryLI 发表于 2018-1-31 14:42:11

sxyweiren 发表于 2018-1-31 11:06
循环数据的同时,设定了CurrentCellPosition来移动单元格。
旧版的DenpyoMan里面用的是ActiveCellKey来 ...

您好,类似中问题需要demo来验证重现您的问题,这样我们能产品人员才能帮您调查问题,谢谢。

sxyweiren 发表于 2018-2-7 10:49:36

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

跑起来后,就会发现单元格一直往下移动。

因为是盲打出来的,所以拼写方面可能有点问题。
反正就是这个思路。

JeffryLI 发表于 2018-2-7 17:15:14

sxyweiren 发表于 2018-2-7 10:49
按照我的说明应该是可以做出Demo来的啊.
因为我现在公司的电脑处于保密隔离的开发间.
不能上网,不能以 ...

好的,收到了,我和研发确认下,稍后给您回复。

JeffryLI 发表于 2018-2-7 18:15:25

您好,刷新是滚动引起的,可以通过代码截止滚动,提高性能
      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]
查看完整版本: MR的控制数据区域刷新的问题