title: c# usercontrol setting list of options for custom property
body: <p>I am trying to create a custom collapsible panel for use in one of my projects. I have it set up to display which sides should be able to collapse, and it takes a string input <code>{"None", "Up", "Right", "Down", "Left", "All"};</code>.</p>
  
  <p>Here is what I have so far:</p>
  
  <pre><code>public partial class CollapsiblePanel : UserControl
  {
      # region Collapse Direction
      List&lt;string&gt; DirectionOptions = new List&lt;string&gt; { "None", "Up", "Right", "Down", "Left", "All" };
      [Browsable(true), DefaultValue("All"), Description("Direction panel collapses. 0-none, 1-up, 2-right, 3-down, 4-left, 5-all")]
      [ListBindable(true), Editor(typeof(ComboBox), typeof(UITypeEditor))]
      private string _direction = "All";
      public List&lt;string&gt; Direction
      {
          get { return DirectionOptions; }
          set
          {
              DirectionOptions = value;
              callCollapseDirectionChanged();
          }
      }
  
      public event Action CollapseDirectionChanged;
      protected void callCollapseDirectionChanged()
      {
          Action handler = CollapseDirectionChanged;
          DisplayButtons();
          if (handler != null)
          {
              handler();
          }
      }
      # endregion
  
      public CollapsiblePanel()
      {
          InitializeComponent();
      }
  
      private void DisplayButtons()
      {
          switch (_direction)
          {
              case "None":
                  buttonDown.Visible = false;
                  buttonUp.Visible = false;
                  buttonRight.Visible = false;
                  buttonLeft.Visible = false;
                  break;
  
              case "Up":
                  buttonDown.Visible = false;
                  buttonUp.Visible = true;
                  buttonRight.Visible = false;
                  buttonLeft.Visible = false;
                  break;
  
              case "Right":
                  buttonDown.Visible = false;
                  buttonUp.Visible = false;
                  buttonRight.Visible = true;
                  buttonLeft.Visible = false;
                  break;
  
              case "Down":
                  buttonDown.Visible = true;
                  buttonUp.Visible = false;
                  buttonRight.Visible = false;
                  buttonLeft.Visible = false;
                  break;
  
              case "Left":
                  buttonDown.Visible = false;
                  buttonUp.Visible = false;
                  buttonRight.Visible = false;
                  buttonLeft.Visible = true;
                  break;
  
              case "All":
                  buttonDown.Visible = true;
                  buttonUp.Visible = true;
                  buttonRight.Visible = true;
                  buttonLeft.Visible = true;
                  break;
          }
      }
  }
  </code></pre>
  
  <p>Can someone explain to me how to get the designer to give the user the <code>DirectionOptions</code> list as the possible values? They can pick any one of the strings as the value.</p>