自定义控件 未找到 xx 类型上的构造函数

jdzfjfhnui jdzfjfhnui 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
想实现的功能:

能为一个自定义控件的一个属性(类型为自定义类型集合List<MyStrcut>)提供设计时的编辑.

下面是我的代码,设计时能弹出集合编辑对话框,但是点击添加按钮时候,就抱未找到XX类型上的构造函数.

哪位高手指点下啊.

public class ListBoxExItem
{
public string text;

public int color;

public ListBoxExItem(string text, int color)
{
this.text = text;
this.color = color;
}
}


public class ListBoxExItemConverter : ExpandableObjectConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
if (sourceType == typeof(string))
{
return true;
}
return base.CanConvertFrom(context, sourceType);
}

public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
if (destinationType == typeof(InstanceDescriptor))
{
return true;
}
return base.CanConvertTo(context, destinationType);
}

public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
{
string obj = (string)value;

string[] parameters = obj.Split(',');

ListBoxExItem item = new ListBoxExItem(
parameters[0],
int.Parse(parameters[1]));
return item;


return base.ConvertFrom(context, culture, value);
}

public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
{

if (destinationType == typeof(InstanceDescriptor))
{
ListBoxExItem dp = (ListBoxExItem)value;
ConstructorInfo ctor =
typeof(ConstructorInfo).GetConstructor(new Type[] { typeof(string), typeof(int) });

return new InstanceDescriptor(ctor, new object[] {dp.text,dp.color});
}


return base.ConvertTo(context, culture, value, destinationType);
}


}

class Class1 : ListBox
{
List<ListBoxExItem> list;
[DesignerSerializationVisibility( DesignerSerializationVisibility.Content)]
public List<ListBoxExItem> List
{
get { return list; }
set { list = value; }
}
}


...全文
评论 5
收藏 已收藏
分享
返回顶部
jdzfjfhnui
组件/控件开发 8,830 成员 7,151 内容