找回密码
 立即注册

QQ登录

只需一步,快速开始

merciful

论坛元老

18

主题

46

帖子

4982

积分

论坛元老

积分
4982

活字格认证

merciful
论坛元老   /  发表于:2011-7-4 14:59  /   查看:5315  /  回复:1
我的程序使用了DockPanel停靠窗体的控件,如果在窗体中包含multirow6的控件,而且
设置了窗体为自动显示隐藏的状态下,multirow6控件我选择了最下面的一行,滚动条也
滚动到最底端,当画面自动隐藏后,再次显示的时候,multirow6中的内容显示的是从第一行
开始的内容,没有显示前次multirow的状态(滚动条最下面)。

真实情况是,multirow最后一行一直保持着被选中状态,只是窗体再显示的时候并没有表现出来。
我猜测应该是窗体重新描画引起的,我想问,multirow本身是否有解决方法。
即,隐藏前显示什么内容,再显示还是一样的位置。

以上。
附件是我写的例程。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

1 个回复

倒序浏览
neil
论坛元老   /  发表于:2011-7-4 17:12:00
沙发

回复 1# merciful 的帖子

你这个dockpanel是自定义的,我不知道你是如何把panel藏起来的。所以不知道为什么会出现这个情况。

但是可以给你一个解决方案。  因为MultiRow在设置CurrentCellPosition(或者CurrentCell) 的时候,会尝试把CurrentCell滚动到可视区域。

在点击你的示例中的 "结果显示"之后, 下面的MultiRow(暂且叫作MulbiRowA吧) 会显示出来。
此时,你可能需要把选择的行滚动出来,可以执行以下代码:

GcMultiRow  MuliRowA = ........// 这里根据你自己的程序逻辑取到MultiRowA。

CellPosition old = MuliRowA.CurrentCellPosition;;
MuliRowA.CurrentCellPosition = CellPosition.Empty;
MuliRowA.CurrentCellPosition = old;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部