private ActiveXContainer CreateActiveXContainer() { if (this.activeXContainer == null) { this.activeXContainer = new ActiveXContainer(this); } return(this.activeXContainer); }
private ActiveXContainer GetParentContainer() { if (this.container == null) { this.container = ActiveXContainer.FindContainerForControl(this); } if (this.container == null) { this.container = this.CreateActiveXContainer(); this.container.AddControl(this); } return(this.container); }
internal static ActiveXContainer FindContainerForControl(ActiveXBase <TActiveXClass, TActiveXInterface> control) { if (control != null) { if (control.container != null) { return(control.container); } if (control.ContainingControl != null) { ActiveXContainer container = control.CreateActiveXContainer(); if (container.RegisterControl(control)) { container.AddControl(control); return(container); } } } return(null); }
private void ChangeActiveXStateDownTo(ActiveXHelper.ActiveXState state) { if (!this.GetActiveXHostState(ActiveXHelper.InTransition)) { this.SetActiveXHostState(ActiveXHelper.InTransition, true); try { while (state < this.activeXState) { switch (this.activeXState) { case ActiveXHelper.ActiveXState.Loaded: this.numberOfComponentChangeEvents++; try { if (this.activeXInstance != null) { this.DetachInterfacesInternal(); Marshal.FinalReleaseComObject(this.activeXInstance); this.activeXInstance = null; } } finally { this.numberOfComponentChangeEvents--; } this.activeXState = ActiveXHelper.ActiveXState.Passive; continue; case ActiveXHelper.ActiveXState.Running: this.StopEvents(); ActiveXContainer activeXContainer = this.GetParentContainer(); if (activeXContainer != null) { activeXContainer.RemoveControl(this); } this.activeXOleObject.SetClientSite(null); this.activeXState = ActiveXHelper.ActiveXState.Loaded; continue; case (ActiveXHelper.ActiveXState.Running | ActiveXHelper.ActiveXState.Loaded): break; case ActiveXHelper.ActiveXState.InPlaceActive: ContainerControl containingControl = this.ContainingControl; if ((containingControl != null) && (containingControl.ActiveControl == this)) { ContainerControlShim.SetActiveControlInternal(containingControl, null); } this.activeXOleInPlaceObject.InPlaceDeactivate(); this.activeXState = ActiveXHelper.ActiveXState.Running; continue; case ActiveXHelper.ActiveXState.UIActive: this.activeXOleInPlaceObject.UIDeactivate(); this.activeXState = ActiveXHelper.ActiveXState.InPlaceActive; continue; } this.activeXState -= ActiveXHelper.ActiveXState.Loaded; } } finally { this.SetActiveXHostState(ActiveXHelper.InTransition, false); } } }