Search Results for

    Show / Hide Table of Contents

    Using the Saving and Saved callbacks

    The CodeBehind of a SmartComponent can access the Saved and Saving Station events to bind a callback method that executes an action before and after a Station has been saved, respectively.

    Note

    The code in this topic can be tested using the default RobotStudio Smart Component template.

    Using the Saved and Saving callbacks

    1. Add the callback functions as methods of the SmartComponent:

      public class CodeBehind : SmartComponentCodeBehind
      {
          public static void BeforeSaveCallback(object o, EventArgs e)
          {
              Logger.AddMessage(new LogMessage("About to save the station..."));
          }
      
          public static void AfterSaveCallback(object o, EventArgs e)
          {
              Logger.AddMessage(new LogMessage("Station saved!"));
          }
      }
      
    2. We will bind the callback functions as soon as the SmartComponent is loaded, for this, we will override the OnLoad() function with the commands needed for doing so.

      public class CodeBehind : SmartComponentCodeBehind
      {
          public static void BeforeSaveCallback(object o, EventArgs e)
          {
              Logger.AddMessage(new LogMessage("About to save the station..."));
          }
      
          public static void AfterSaveCallback(object o, EventArgs e)
          {
              Logger.AddMessage(new LogMessage("Station saved!"));
          }
      
          public override void OnLoad(SmartComponent component)
          {
              base.OnLoad(component);
          }
      }
      
    3. Since the Saved event is handled using the built-in <xref:System.EventHandler> we use that Handler to create a new instance of the event and bind it to the Saved object, that represents the station in which the SmartComponent will run.

      public class CodeBehind : SmartComponentCodeBehind
      {
          public static void BeforeSaveCallback(object o, EventArgs e)
          {
              Logger.AddMessage(new LogMessage("About to save the station..."));
          }
      
          public static void AfterSaveCallback(object o, EventArgs e)
          {
              Logger.AddMessage(new LogMessage("Station saved!"));
          }
      
          public override void OnLoad(SmartComponent component)
          {
              Station.ActiveStation.Saved += new EventHandler(AfterSaveCallback);
              base.OnLoad(component);
          }
      }
      
    4. The Saving event is handled using the SavingProjectEventHandler, so we need to use that handler to create a new instance of the event and bind it to the Saving event.

      public class CodeBehind : SmartComponentCodeBehind
      {
          public static void BeforeSaveCallback(object o, EventArgs e)
          {
              Logger.AddMessage(new LogMessage("About to save the station..."));
          }
      
          public static void AfterSaveCallback(object o, EventArgs e)
          {
              Logger.AddMessage(new LogMessage("Station saved!"));
          }
      
          public override void OnLoad(SmartComponent component)
          {
              Station.ActiveStation.Saved += new EventHandler(AfterSaveCallback);
              Station.ActiveStation.Saving += new SavingProjectEventHandler(BeforeSaveCallback);
              base.OnLoad(component);
          }
      }
      

    Required Namespaces

    ABB.Robotics.RobotStudio

    ABB.Robotics.RobotStudio.Stations

    See Also

    • SmartComponent Introduction
    • Creating a SmartComponent
    • Overriding OnLoad
    • Using the Unload and Shutdown Callbacks
    In this article
    Back to top Copyright © 2026 ABB Robotics