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

jdzfjfhnui 2010-04-04 09:18:20
想实现的功能:

能为一个自定义控件的一个属性(类型为自定义类型集合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; }
}
}


...全文
743 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdzfjfhnui 2011-08-17
  • 打赏
  • 举报
回复
迟来的结贴,今天突然发现.
jdzfjfhnui 2010-06-27
  • 打赏
  • 举报
回复
不好意思,前段时间断网了, 谢谢大家指定,ok打完收工
Dobzhansky 2010-04-06
  • 打赏
  • 举报
回复
点击添加时, 会调用

ListBoxExItem()

而你的没有, 定义一个默认构造函数, 初始化成员变量为默认值.

就可以了.
threenewbee 2010-04-06
  • 打赏
  • 举报
回复
添加一个默认构造函数
public ListBoxExItem()
{

}
马老虎 2010-04-04
  • 打赏
  • 举报
回复
帮你顶把!
今天没心情看代码了

8,834

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 组件/控件开发
社区管理员
  • 组件/控件开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧