# Change Colors of User-interface Elements Example (C#)

This example shows how to change the colors of user-interface elements.

    //--------------------------------------------------------------
    // Preconditions:
    // 1. Create a C# Windows console project.
    // 2. Copy and paste this example into the C# IDE.
    // 3. Add a reference to:
    //    install_dir\APISDK\tlb\DraftSight.Interop.dsAutomation.dll.
    // 4. Add references to System and System.Windows.Forms.
    // 5. Start DraftSight and open a document.
    // 6. Start debugging the project.
    //
    // Postconditions:
    // 1. Message boxes pop up before and after the colors of
    //    the user-interface elements change.
    // 2. Click OK to close each message box.
    // 3. Examine and experiment with the user-interface
    //    elements whose colors changed:
    //    * Text in command window
    //    * Crosshair
    //    * Background of model
    // 4. Run the macro again to reset the colors of the user-interface
    //    elements to their former colors.
    //----------------------------------------------------------------

    using System;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    using DraftSight.Interop.dsAutomation;

    namespace ApplicationOptionsCSharp
    {

        static class Program
        {
            public static void Main(string[] args)
            {
                DraftSight.Interop.dsAutomation.Application dsApp;

                //Connect to DraftSight application
                dsApp = (DraftSight.Interop.dsAutomation.Application)Marshal.GetActiveObject("DraftSight.Application");

                // Abort any command currently running in DraftSight to avoid nested commands
                dsApp.AbortRunningCommand();

                if (null == dsApp)
                {
                    return;
                }

                ApplicationOptions dsApplicationOptions = dsApp.GetApplicationOptions();

                //Change colors of user-interface elements

                //Set color of text of command window to blue or black, dependent on current color
                Color dsColor = dsApplicationOptions.GetElementColor(dsElementColor_e.dsElementColor_CommandWindowText);
                MessageBox.Show("Color of text command window before changing its color: " + dsColor.GetNamedColor());
                if (dsColor.GetNamedColor() == dsNamedColor_e.dsNamedColor_Blue)
                    dsColor.SetRGBColor(0, 0, 0);
                else
                    dsColor.SetNamedColor(dsNamedColor_e.dsNamedColor_Blue);
                dsApplicationOptions.SetElementColor(dsElementColor_e.dsElementColor_CommandWindowText, dsColor);
                MessageBox.Show("Color of text of command window after changing its color: " + dsColor.GetNamedColor());

                //Set color of model crosshair to red or white, dependent on current color
                dsColor = dsApplicationOptions.GetElementColor(dsElementColor_e.dsElementColor_ModelCrosshair);
                MessageBox.Show("Color of crosshair before changing its color: " + dsColor.GetNamedColor());
                if (dsColor.GetNamedColor() == dsNamedColor_e.dsNamedColor_Red)
                    dsColor.SetNamedColor(dsNamedColor_e.dsNamedColor_White);
                else
                    dsColor.SetNamedColor(dsNamedColor_e.dsNamedColor_Red);
                dsApplicationOptions.SetElementColor(dsElementColor_e.dsElementColor_ModelCrosshair, dsColor);
                MessageBox.Show("Color of crosshair after changing its color: " + dsColor.GetNamedColor());

                //Set color of background of model to white or black, dependent on current color
                dsColor = dsApplicationOptions.GetElementColor(dsElementColor_e.dsElementColor_ModelBackground);
                MessageBox.Show("Color of model background before changing its color: " + dsColor.GetNamedColor());
                if (dsColor.GetNamedColor() == dsNamedColor_e.dsNamedColor_White)
                    dsColor.SetRGBColor(0, 0, 0);
                else
                    dsColor.SetNamedColor(dsNamedColor_e.dsNamedColor_White);
                dsApplicationOptions.SetElementColor(dsElementColor_e.dsElementColor_ModelBackground, dsColor);
                MessageBox.Show("Color of model background after changing its color: " + dsColor.GetNamedColor());

            }
        }
    }