我厌倦了搜索。我做了愚蠢的,但快速的事情:
dockingManager.DockControlActivated += handler1;
dockingManager.DockControlDeactivated += handler2;
dockingManager.DockMenuClick += handler3;
dockingManager.DockStateChanged+=handler4;
dockingManager.DockStateChanging += handler5;
dockingManager.DockVisibilityChanged += handler6;
dockingManager.DockVisibilityChanging += handler7;
dockingManager.NewDockStateBeginLoad += handler8;
dockingManager.NewDockStateEndLoad += handler9;
dockingManager.DockAllow += handler10;
dockingManager.ControlRestored += handler11;
dockingManager.ControlMinimized += handler12;
dockingManager.ControlMaximizing += handler13;
dockingManager.ControlMaximized += handler14;
dockingManager.AutoHideAnimationStop += handler15;
dockingManager.AutoHideAnimationStart += handler16;
}
private void handler16(object sender, AutoHideAnimationEventArgs arg)
{
int i=0;i++;
}
private void handler15(object sender, AutoHideAnimationEventArgs arg)
{
int i=0;i++;
}
private void handler14(object sender, ControlMaximizedEventArgs args)
{
int i=0;i++;
}
...
我已经把断点在每个处理器和我发现AutoHideAnimationStop或AutoHideAnimationStart可以做的伎俩。即使我用代码打开选项卡也会触发它(即:dockingManager.ActivateControl(ElementHost);)。我也可以看一下arg,看看它是在分卷还是分卷。
我的解决方案:
private void OnLoadCompleted(object _sender)
{
dockingManager.AutoHideAnimationStop += handler15;
}
private void handler15(object _sender, AutoHideAnimationEventArgs _arg)
{
MyUserControl childControl = (MyUserControl)MyElementHost.Child;
if (MyElementHost!= null && childControl != null && MyElementHost.Visible)
{
childControl.OnVisibilityChanged(_sender, _arg);
}
}