2009-11-23 2 views
3

GUID 유형의 종속성 속성이있는 사용자 지정 활동이 있다고 가정 해 봅니다.워크 플로 활동

내 맞춤 디자이너에서 선택할 수있는 가능한 값으로 콤보 박스 (또는 내 자신의 usercontrol)처럼 보이기를 원합니다 (값은 데이터베이스에서 가져와야 함).

이것이 가능합니까?

답변

3

UITypeEditor을 만들어야합니다. 활동에서 귀하의 재산에

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

    // Your code here to populate the list box with your items 

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

    list.Click += onclick; 

    myEditorService.DropDownControl(list); 

    list.Click -= onclick; 

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

: - - : 다음은 combox 편집기의 템플릿입니다

[Editor(typeof(MyCustomEditor), typeof(UITypeEditor)] 
public Guid MyGuidValue 
{ 
    get { return (Guid)GetValue(MyGuidValueProperty); } 
    set { SetValue(MyGuidValueProperty, value); } 
} 
  • 당신의 사용자 정의 편집기를 생성 한 PropertyGrid가 말할 것 Editor 속성 이 속성.
  • 편집기의 GetEditStyle 메서드는 속성 표에 속성 값에 드롭 다운 단추를 표시합니다.
  • 클릭하면 속성 표가 사용자 정의 편집기의 EditValue 메서드를 호출합니다.
  • 편집기 서비스는 드롭 다운 영역에 표시 할 컨트롤을 취하는 DropDownControl 메서드로 드롭 다운을 표시하는 데 사용됩니다.
  • DropDownControl 메서드는 편집기 서비스 CloseDropDown 메서드가 호출 될 때까지 차단됩니다.
+0

감사합니다. 안소니, 나는 그것을 시도 할 것이다. 목록 체크 박스가 가능한지 알고 계십니까? 아니면 내 사용자 지정 컨트롤? – pdiddy

+0

DropDownControl에 자신이 원하는 컨트롤을 포함하여 사용자가 원하는대로 컨트롤을 전달할 수 있습니다. – AnthonyWJones

관련 문제