使用的是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();進行隱藏。這種方法的得到的記過顯示上有一定改善,但是也存在局部位置的刷新問題。
現在暫且用第二種方法處理的,對於這個問題實在是比較無語,嘗試了好一陣也沒有完美解決,請問大家有遇見過這個問題的嗎?有好的解決方法不。