2012-05-18 5 views
0

두 개의 인수와 두 개의 속성이있는 사용자 지정 활동이 있습니다. 재 호스팅 된 디자이너에게 작업을 드롭 할 때 사용자가 값이나 변수 이름을 입력 할 수있는 속성 창에서 인수와 속성을 볼 수 있습니다.사용자 지정 활동의 속성 창에서 컨트롤 변경

속성 창에서 속성 중 하나 사용자가 텍스트 상자에 입력 할 수 있기를 원하지만 대신 텍스트 상자를 콤보 상자로 바꾸면 값 목록에서 선택할 수 있습니다. 이것은, 나는 대답을 찾을 수없는 것 같습니다.

해결 된 것으로 표시된 기존 항목의 일부 코드를 사용했지만 요청 사항이 약간 다릅니다. UITypeEditor에서 상속,

[EditorAttribute(typeof(ComboBoxTest), typeof(System.Drawing.Design.UITypeEditor))] 

그리고 ComboBoxTest 클래스를 만들었습니다 :

public class ComboBoxTest : UITypeEditor 
    { 
     public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) 
     { 
      return UITypeEditorEditStyle.DropDown; 
     } 
     public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) 
     { 
      var editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); 
      ListBox list = new ListBox(); 
      //ComboBox list = new ComboBox(); 

      // Your code here to populate the list box with your items 
      list.Items.Add("A"); 
      list.Items.Add("B"); 
      list.Items.Add("C"); 

      EventHandler onclick = (sender, e) => 
      { 
       editorService.CloseDropDown(); 
      }; 

      list.Click += onclick; 

      editorService.DropDownControl(list); 

      list.Click -= onclick; 

      return (list.SelectedItem != null) ? list.SelectedItem : null; 
     } 
    } 

을하지만, 낙하 할 때 내 사용자 지정 활동에서

, 나는 당해 재산의 위 아래에 놓여있다 액티비티를 디자이너로 가져 오는 경우 속성 창에는 여전히 텍스트 상자가 있고 콤보 상자는 나타나지 않습니다. 나는 어떤 중단 점에도 부딪치지 않기 때문에 그것을 디버깅하는 것처럼 보이지 않는다.

A) 내가 올바른 방법으로하고 있는지 또는 B) 어딘가에 오류가있는 경우 C) 훨씬 더 나은 접근 방법을 사용해야합니다.

나는 그것이 모두 의미가 있기를 바랍니다. 읽어 주셔서 감사합니다!

종류와 관련, 마이클

답변

0

당신은 Debug.Print("write something")를 사용하여 디버그 디자이너 물건에 출력 창으로 볼 수있다.

또한

[Editor(typeof(ComboBoxTest), typeof(System.Drawing.Design.UITypeEditor))] 

대신

시도