Что заставило мой сплиттер двигаться?

У меня есть проблема, которая заставляет меня задуматься. У меня есть.net usercontrol с элементом управления splitcontainer..Net usercontrol на самом деле размещается в контейнере элемента управления в более старом устаревшем коде, отличном от.net (визуальные объекты).

Проблема, с которой я столкнулся, заключается в том, что я получаю событие splitter_moved, запускающее элемент управления splitcontainer, когда пользовательский элемент управления представляется пользователю, но я не могу понять, что вызывает его фактическое перемещение. Я столкнулся с рядом любопытных ситуаций, связанных с взаимодействием кода VO и материалов.net, но у меня есть несколько других пользовательских контролов, встроенных в элементы управления контейнером VO, которые работают просто отлично. Похоже, именно эта проблема имеет проблемы.

Контроллеры VO контейнера все идентичны. Как и встроенные в них пользовательские элементы управления.net (все они наследуются от одного базового класса). Вот почему мне так трудно понять, почему именно этот.

Я думаю, что я действительно хочу знать, это как определить, что заставило сплиттер двигаться внутри элемента управления splitcontainer. Отправитель и eventargs не очень помогают, потому что все они просто ссылаются на элемент управления splitcontainer (очевидно).

Помогите??

РЕДАКТИРОВАТЬ: стек вызовов из обработчика события splitter_moved выглядит следующим образом:

00000072    0.26412687  Method: Void splitContainerMain_SplitterMoved(System.Object, System.Windows.Forms.SplitterEventArgs)    
    00000073    0.26649699  Method: Void OnSplitterMoved(System.Windows.Forms.SplitterEventArgs)    
    00000074    0.26906940  Method: Void set_SplitterDistance(Int32)    
    00000075    0.27223459  Method: Void ApplySplitterDistance()    
    00000076    0.27425244  Method: Void ResizeSplitContainer()     
    00000077    0.27621472  Method: Void OnLayout(System.Windows.Forms.LayoutEventArgs)     
    00000078    0.27813032  Method: Void PerformLayout(System.Windows.Forms.LayoutEventArgs)    
    00000079    0.28007442  Method: Void System.Windows.Forms.Layout.IArrangedElement.PerformLayout(System.Windows.Forms.Layout.IArrangedElement, System.String)    
    00000080    0.28211826  Method: Void DoLayout(System.Windows.Forms.Layout.IArrangedElement, System.Windows.Forms.Layout.IArrangedElement, System.String)    
    00000081    0.28451827  Method: Void OnResize(System.EventArgs)     
    00000082    0.28713536  Method: Void OnSizeChanged(System.EventArgs)    
    00000083    0.28970191  Method: Void UpdateBounds(Int32, Int32, Int32, Int32, Int32, Int32)     
    00000084    0.29425862  Method: Void UpdateBounds()     
    00000085    0.29450893  Method: Void WmWindowPosChanged(System.Windows.Forms.Message ByRef)     
    00000086    0.29477015  Method: Void WndProc(System.Windows.Forms.Message ByRef)    
    00000087    0.29508862  Method: Void WndProc(System.Windows.Forms.Message ByRef)    
    00000088    0.29539761  Method: Void WndProc(System.Windows.Forms.Message ByRef)    
    00000089    0.29568058  Method: Void WndProc(System.Windows.Forms.Message ByRef)    
    00000090    0.29596806  Method: Void OnMessage(System.Windows.Forms.Message ByRef)  
    00000091    0.29627341  Method: Void WndProc(System.Windows.Forms.Message ByRef)    
    00000092    0.29659048  Method: IntPtr Callback(IntPtr, Int32, IntPtr, IntPtr)  
    00000093    0.29688439  Method: Boolean SetWindowPos(System.Runtime.InteropServices.HandleRef, System.Runtime.InteropServices.HandleRef, Int32, Int32, Int32, Int32, Int32)     
    00000094    0.29714754  Method: Void SetBoundsCore(Int32, Int32, Int32, Int32, System.Windows.Forms.BoundsSpecified)    
    00000095    0.29755905  Method: Void SetBoundsCore(Int32, Int32, Int32, Int32, System.Windows.Forms.BoundsSpecified)    
    00000096    0.29781467  Method: Void System.Windows.Forms.Layout.IArrangedElement.SetBounds(System.Drawing.Rectangle, System.Windows.Forms.BoundsSpecified)     
    00000097    0.29814151  Method: Void xLayoutDockedControl(System.Windows.Forms.Layout.IArrangedElement, System.Drawing.Rectangle, Boolean, System.Drawing.Size ByRef, System.Drawing.Rectangle ByRef)   
    00000098    0.29844967  Method: System.Drawing.Size LayoutDockedControls(System.Windows.Forms.Layout.IArrangedElement, Boolean)     
    00000099    0.29872790  Method: Boolean xLayout(System.Windows.Forms.Layout.IArrangedElement, Boolean, System.Drawing.Size ByRef)   
    00000100    0.29901370  Method: Boolean LayoutCore(System.Windows.Forms.Layout.IArrangedElement, System.Windows.Forms.LayoutEventArgs)  
    00000101    0.29931039  Method: Boolean Layout(System.Object, System.Windows.Forms.LayoutEventArgs)     
    00000102    0.29965651  Method: Void OnLayout(System.Windows.Forms.LayoutEventArgs)     
    00000103    0.29993618  Method: Void OnLayout(System.Windows.Forms.LayoutEventArgs)     
    00000104    0.30027559  Method: Void OnLayout(System.Windows.Forms.LayoutEventArgs)     
    00000105    0.30064937  Method: Void PerformLayout(System.Windows.Forms.LayoutEventArgs)    
    00000106    0.30087790  Method: Void System.Windows.Forms.Layout.IArrangedElement.PerformLayout(System.Windows.Forms.Layout.IArrangedElement, System.String)    
    00000107    0.30116984  Method: Void DoLayout(System.Windows.Forms.Layout.IArrangedElement, System.Windows.Forms.Layout.IArrangedElement, System.String)    
    00000108    0.30157101  Method: Void OnResize(System.EventArgs)     
    00000109    0.30196688  Method: Void OnResize(System.EventArgs)     
    00000110    0.30212274  Method: Void OnSizeChanged(System.EventArgs)    
    00000111    0.30244765  Method: Void UpdateBounds(Int32, Int32, Int32, Int32, Int32, Int32)     
    00000112    0.30264741  Method: Void UpdateBounds()     
    00000113    0.30294549  Method: Void WmWindowPosChanged(System.Windows.Forms.Message ByRef)     
    00000114    0.30337656  Method: Void WndProc(System.Windows.Forms.Message ByRef)    
    00000115    0.30359614  Method: Void WndProc(System.Windows.Forms.Message ByRef)    
    00000116    0.30389002  Method: Void WndProc(System.Windows.Forms.Message ByRef)    
    00000117    0.30451524  Method: Void WndProc(System.Windows.Forms.Message ByRef)    
    00000118    0.30456889  Method: Void OnMessage(System.Windows.Forms.Message ByRef)  
    00000119    0.30483985  Method: Void WndProc(System.Windows.Forms.Message ByRef)    
    00000120    0.30507788  Method: IntPtr Callback(IntPtr, Int32, IntPtr, IntPtr)  
    00000121    0.30540919  Method: Boolean SetWindowPos(System.Runtime.InteropServices.HandleRef, System.Runtime.InteropServices.HandleRef, Int32, Int32, Int32, Int32, Int32)     
    00000122    0.30566931  Method: Void SetBoundsCore(Int32, Int32, Int32, Int32, System.Windows.Forms.BoundsSpecified)    
    00000123    0.30598581  Method: Void SetBounds(Int32, Int32, Int32, Int32, System.Windows.Forms.BoundsSpecified)    
    00000124    0.30637357  Method: Void set_Height(Int32)  
    00000125    0.30679765  Method: Void ContainerCtrl.ResizeForm(ContainerCtrl*, WTL.CRect)    
    00000126    0.30718428  Method: Int32 ContainerCtrl.OnSize(ContainerCtrl*, UInt32, UInt32, Int32, Int32*)   
    00000127    0.30755892  Method: Int32 ContainerCtrl.ProcessWindowMessage(ContainerCtrl*, HWND__*, UInt32, UInt32, Int32, Int32*, UInt32)    
    00000128    0.30793831  Method: Int32 ATL.CDialogImplBaseT<ATL::CWindow>.DialogProc(HWND__*, UInt32, UInt32, Int32)     
    00000129    0.30838418  Method: Int32 ATL.CAxDialogImpl<ContainerCtrl,ATL::CWindow>.DialogProc(HWND__*, UInt32, UInt32, Int32)  
    00000130    0.30881271  Method: Int32 SetWindowPos(HWND__*, HWND__*, Int32, Int32, Int32, Int32, UInt32)    
    00000131    0.30922171  Method: Int32 ATL.CComControlBase.IOleInPlaceObject_SetObjectRects(ATL.CComControlBase*, tagRECT*, tagRECT*)    
    00000132    0.30961114  Method: Int32 ATL.IOleInPlaceObjectWindowlessImpl<ContainerCtrl>.SetObjectRects(ATL.IOleInPlaceObjectWindowlessImpl<ContainerCtrl>*, tagRECT*, tagRECT*)

Редактировать: Хорошо, похоже, что событие resize на контроллере контейнера VO запускается на этом, когда оно показывается пользователю, но не на других.

Много сбивает с толку?!?

0 ответов

Другие вопросы по тегам