3

내 프로젝트 중 하나에서 사용할 수 있도록 사용자 정의 접을 수있는 패널을 만들려고합니다. 어느 쪽이 무너질 수 있는지 표시하도록 설정하고 문자열 입력 {"None", "Up", "Right", "Down", "Left", "All"};이 필요합니다.C# usercontrol 사용자 정의 속성에 대한 옵션 목록 설정

public partial class CollapsiblePanel : UserControl 
{ 
    # region Collapse Direction 
    List<string> DirectionOptions = new List<string> { "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<string> 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; 
     } 
    } 
} 

누군가는 디자이너가 사용자에게 가능한 값으로 DirectionOptions 목록을 제공하는 얻는 방법을 나에게 설명 할 수 : 여기

는 지금까지이 무엇인가? 그들은 문자열 중 하나를 값으로 선택할 수 있습니다.

답변

3

사용자가 여러 옵션을 선택할 수 있습니까? 아니면 하나만 선택할 수 있습니까?

그 중 하나 일 경우 속성은 목록이 아닌 열거 형이어야합니다. 내가 코드를 테스트하지 않은,하지만 그건 당신이 무엇을 달성하고자하는의 일반적인 방향으로 당신을 넣어해야 -이 가이드 -

public partial class CollapsiblePanel : UserControl 
{ 
    public enum CollapseDirection 
    { 
     None, 
     Up, 
     Right, 
     Down, 
     Left, 
     All 
    } 

    # region Collapse Direction 

    [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 CollapseDirection _direction = CollapseDirection.All; 
    public CollapseDirection Direction 
    { 
     get { return _direction; } 
     set 
     { 
      _direction = 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 CollapseDirection.None: 
       buttonDown.Visible = false; 
       buttonUp.Visible = false; 
       buttonRight.Visible = false; 
       buttonLeft.Visible = false; 
       break; 

      case CollapseDirection.Up: 
       buttonDown.Visible = false; 
       buttonUp.Visible = true; 
       buttonRight.Visible = false; 
       buttonLeft.Visible = false; 
       break; 

      case CollapseDirection.Right: 
       buttonDown.Visible = false; 
       buttonUp.Visible = false; 
       buttonRight.Visible = true; 
       buttonLeft.Visible = false; 
       break; 

      case CollapseDirection.Down: 
       buttonDown.Visible = true; 
       buttonUp.Visible = false; 
       buttonRight.Visible = false; 
       buttonLeft.Visible = false; 
       break; 

      case CollapseDirection.Left: 
       buttonDown.Visible = false; 
       buttonUp.Visible = false; 
       buttonRight.Visible = false; 
       buttonLeft.Visible = true; 
       break; 

      case CollapseDirection.All: 
       buttonDown.Visible = true; 
       buttonUp.Visible = true; 
       buttonRight.Visible = true; 
       buttonLeft.Visible = true; 
       break; 
     } 
    } 
} 
  • 참고 :이 같은

    뭔가 작동합니다.

+0

대단히 감사합니다. 이것은 바로 그 것이었다. – Chris