使用的是DevExpress的dockManager控件,新增一个DockPanel,在DockPanel中添加一个AxMapControl控件并设置默认加载地图。
实现效果图如下:
但是存在一个问题,那就是在DockPanel默认加载时候如果使用的是AutoHide状态,在鼠标放在左侧标签时候(只是鼠标放在上面而没有点击),会自动弹出显示该DockPanel,但是该DockPanel中的地图控件显示异常。
效果如下图所示:
似乎是刷新不完全,只有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();进行隐藏。这种方法的得到的记过显示上有一定改善,但是也存在局部位置的刷新问题。
现在暂且用第二种方法处理的,对于这个问题实在是比较无语,尝试了好一阵也没有完美解决,请问大家有遇见过这个问题的吗?有好的解决方法不。