dockManager中DockPanel的刷新问题!

使用的是DevExpress的dockManager控件,新增一个DockPanel,在DockPanel中添加一个AxMapControl控件并设置默认加载地图。

实现效果图如下:

image

但是存在一个问题,那就是在DockPanel默认加载时候如果使用的是AutoHide状态,在鼠标放在左侧标签时候(只是鼠标放在上面而没有点击),会自动弹出显示该DockPanel,但是该DockPanel中的地图控件显示异常。

效果如下图所示:

image(正常情况下应该与上图完全相同)

似乎是刷新不完全,只有DockPanel的右侧一点地方的内容显示出来了,其他的内容呢?(如果是点击显示或者DockPanel在默认加载时不是AutoHide状态,均不会出现这种情况)

本来以为在DockPanel完全显示处理进行一下AxMapControl的刷新即可,但是找不到DockPanel相应的事件(大部分事件像是Resize等在窗体大小刚改变的时候就触发了,而不是显示完全后才触发)。

最终在无奈的情况下初步做了几种处理方法,但是都存在一定的问题。

1、在加载的时候使DockPanel为DockVisibility.Visible状态,禁用AutoHide状态(选择该DockPanel设置其ShowAutoHideButton为False即可)。

2、设置DockManager的AutoHideSpeed尽量高一些(我设置为50),这样也可以避免此种情况的发生,但是没有那种慢慢弹出DockPanel的效果了,鼠标放在标签上DockPanel就瞬间弹出了,比较突兀。

3、在加载的时候先进行一下初始化工作,即先通过dockPanelEagle.Show();显示一下,在通过dockPanelEagle.HideSliding();进行隐藏。这种方法的得到的记过显示上有一定改善,但是也存在局部位置的刷新问题。

现在暂且用第二种方法处理的,对于这个问题实在是比较无语,尝试了好一阵也没有完美解决,请问大家有遇见过这个问题的吗?有好的解决方法不。

原文地址:https://www.cnblogs.com/Jingkunliu/p/4269802.html