【发布时间】:2012-05-18 10:39:45
【问题描述】:
我有一个自定义活动,它有几个参数和几个属性。将活动放入重新托管的设计器时,参数和属性都可以从属性窗口中看到,用户可以在其中输入值或变量名称等。
对于其中一个属性(在属性窗口中),我不希望用户能够输入它,而是将文本框替换为组合框,以便他们可以从值列表中进行选择.这个,我好像找不到答案。
我使用了标记为已解决的现有条目中的一些代码,但我的要求略有不同。
在我的自定义活动中,我在相关属性上方放置了以下内容:
[EditorAttribute(typeof(ComboBoxTest), typeof(System.Drawing.Design.UITypeEditor))]
并创建了 ComboBoxTest 类,继承自 UITypeEditor:
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) 有更好的方法我应该使用。
我希望这一切都有意义。感谢您的阅读!
亲切的问候, 迈克尔
【问题讨论】:
标签: workflow-foundation-4 workflow-rehosting