How to create dropdown component in GH C#?

thanks a lot for help

I used a few solutions from:

It almost works I just missing tick boxes when I tick selection :relaxed:
I will post the whole code so it will be a good example for other new scripters…

    namespace SAM.Analytical.Grasshopper
    {
        public class AnalyticalPanelType : GH_Component
        {
            private PanelType panelType = PanelType.Undefined;
            
            /// <summary>
            /// Panel Type
            /// </summary>
            public AnalyticalPanelType()
              : base("AnalyticalPanelType", "AnalyticalPanelType",
                  "Snap Panels",
                  "SAM", "Analytical")
            {

            }

            public override bool Write(GH_IWriter writer)
            {
                writer.SetInt32("PanelType", (int)panelType);
                return base.Write(writer);
            }

            public override bool Read(GH_IReader reader)
            {
                int aIndex = -1;
                if (reader.TryGetInt32("PanelType", ref aIndex))
                    panelType = (PanelType)aIndex;
                
                return base.Read(reader);
            }

            protected override void AppendAdditionalComponentMenuItems(ToolStripDropDown menu)
            {
                foreach (PanelType panelType in Enum.GetValues(typeof(PanelType)))
                    GH_Component.Menu_AppendItem(menu, panelType.ToString(), Menu_PanelTypeChanged).Tag = panelType;

                base.AppendAdditionalComponentMenuItems(menu);
            }

            private void Menu_PanelTypeChanged(object sender, EventArgs e)
            {
                if (sender is ToolStripMenuItem item && item.Tag is PanelType)
                {
                    //Do something with panelType
                    this.panelType = (PanelType)item.Tag;
                    ExpireSolution(true);
                }
            }

            /// <summary>
            /// Registers all the input parameters for this component.
            /// </summary>
            protected override void RegisterInputParams(GH_InputParamManager inputParamManager)
            {

            }

            /// <summary>
            /// Registers all the output parameters for this component.
            /// </summary>
            protected override void RegisterOutputParams(GH_OutputParamManager outputParamManager)
            {
                outputParamManager.AddGenericParameter("PanelType", "PanelType", "Analytical PanelType", GH_ParamAccess.item);
            }

            /// <summary>
            /// This is the method that actually does the work.
            /// </summary>
            /// <param name="dataAccess">The DA object is used to retrieve from inputs and store in outputs.</param>
            protected override void SolveInstance(IGH_DataAccess dataAccess)
            {
                dataAccess.SetData(0, panelType);
            }

            /// <summary>
            /// Provides an Icon for the component.
            /// </summary>
            protected override System.Drawing.Bitmap Icon
            {
                get
                {
                    //You can add image files to your project resources and access them like this:
                    // return Resources.IconForThisComponent;
                    return Resources.HL_Logo24;
                }
            }

            /// <summary>
            /// Gets the unique ID for this component. Do not change this ID after release.
            /// </summary>
            public override Guid ComponentGuid
            {
                get { return new Guid("25a6b405-19ab-4ff1-9666-7760997ccfdd"); }
            }
        }
    }