コード例 #1
0
 internal void OnInPlaceDeactivate(ActiveXBase <TActiveXClass, TActiveXInterface> site)
 {
     if (this.siteActive == site)
     {
         this.siteActive = null;
         ContainerControl containerControl = this.parent.FindContainerControlInternal();
         if (containerControl != null)
         {
             ContainerControlShim.SetActiveControlInternal(containerControl, null);
         }
     }
 }
コード例 #2
0
 internal void OnUIActivate(ActiveXBase <TActiveXClass, TActiveXInterface> site)
 {
     if (this.siteUIActive != site)
     {
         if ((this.siteUIActive != null) && (this.siteUIActive != site))
         {
             this.siteUIActive.activeXOleInPlaceObject.UIDeactivate();
         }
         site.AddSelectionHandler();
         this.siteUIActive = site;
         ContainerControl containerControl = site.ContainingControl;
         if ((containerControl != null) && containerControl.Contains(site))
         {
             ContainerControlShim.SetActiveControlInternal(containerControl, site);
         }
     }
 }
コード例 #3
0
        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);
                }
            }
        }