public void SetVisualTip(object component, Skybound.VisualTips.VisualTip visualTip)
 {
     Skybound.VisualTips.VisualTip visualTip1 = VisualTipMap[component] as Skybound.VisualTips.VisualTip;
     if (visualTip1 != null)
         visualTip1.SetProvider(null);
     if ((visualTip != null) && (visualTip.Provider != null))
         visualTip.Provider.SetVisualTip(component, null);
     VisualTipMap[component] = visualTip;
     if (visualTip != null)
     {
         visualTip.SetProvider(this);
         Skybound.VisualTips.VisualTipProvider.UpdateTipTarget(visualTip, component);
     }
 }
 private void ShowTipCore(System.Windows.Forms.Control control, object component, Skybound.VisualTips.VisualTip tip, System.Drawing.Rectangle toolArea, Skybound.VisualTips.VisualTipDisplayOptions options)
 {
     if ((control != null) && control.InvokeRequired)
     {
         object[] objArr = new object[] {
                                          control, 
                                          component, 
                                          tip, 
                                          toolArea, 
                                          options };
         control.BeginInvoke(new Skybound.VisualTips.VisualTipProvider.ShowTipCoreMethod(ShowTipCore), objArr);
         return;
     }
     bool flag = (options & Skybound.VisualTips.VisualTipDisplayOptions.HideOnMouseLeave) == Skybound.VisualTips.VisualTipDisplayOptions.HideOnMouseLeave;
     Skybound.VisualTips.VisualTipWindow visualTipWindow1 = flag ? Skybound.VisualTips.VisualTipProvider.TrackedTipWindow : CurrentTipWindow;
     if (visualTipWindow1 == null)
     {
         if (flag)
         {
             Skybound.VisualTips.VisualTipProvider.TrackedTipWindow = new Skybound.VisualTips.VisualTipWindow();
             visualTipWindow1 = new Skybound.VisualTips.VisualTipWindow();
         }
         else
         {
             Skybound.VisualTips.VisualTipWindow visualTipWindow2 = new Skybound.VisualTips.VisualTipWindow();
             CurrentTipWindow = new Skybound.VisualTips.VisualTipWindow();
             visualTipWindow1 = visualTipWindow2;
         }
     }
     if (visualTipWindow1.DisplayedTip != tip)
     {
         visualTipWindow1.Undisplay();
         Skybound.VisualTips.VisualTipEventArgs visualTipEventArgs = new Skybound.VisualTips.VisualTipEventArgs(tip, component == null ? control : component);
         tip.SetProvider(this);
         Skybound.VisualTips.VisualTipProvider.UpdateTipTarget(tip, visualTipEventArgs.Instance);
         OnTipPopup(visualTipEventArgs);
         if (visualTipEventArgs.Cancel)
         {
             Skybound.VisualTips.VisualTipProvider.PreventDisplayTip = tip;
             return;
         }
         _CurrentTip = tip;
         CurrentControl = control;
         CurrentComponent = component;
         if (flag)
             Skybound.VisualTips.VisualTipTracker.TrackingProvider = this;
         Skybound.VisualTips.VisualTipProvider.WindowStack.Add(visualTipWindow1, control);
         visualTipWindow1.Display(this, tip, toolArea, options);
         return;
     }
     visualTipWindow1.SetToolArea(toolArea, options);
 }