【发布时间】:2012-10-07 10:51:55
【问题描述】:
我从PropertyGrid 创建了一个派生控件,并且以下属性导致 Visual Studio 在设计时出现问题。
注意:运行时没有任何问题。这只是设计师的问题,如果我从表单的资源文件中手动删除编码值,问题就会得到解决。
构造函数:
/// <summary>
/// Public constructor.
/// </summary>
public FilterablePropertyGrid()
{
base.SelectedObjects = wrapper.ToArray();
}
房产代码:
private List<ObjectWrapper> wrapper = new List<ObjectWrapper>();
/// <summary>
/// Overwride the PropertyGrid.SelectedObject property.
/// The object passed to the base PropertyGrid is the wrapper.
/// </summary>
public new List<ICustomType> SelectedObjects
{
get
{
return wrapper.Any() ?
base.SelectedObjects.Select(p => ((ObjectWrapper)p).SelectedObject).ToList() :
new List<ICustomType>();
}
set
{
if (value == null || value.Count == 0)
{
wrapper = new List<ObjectWrapper>();
base.SelectedObjects = new object[] { };
}
else
{
wrapper = new List<ObjectWrapper>(value.Select(p => new ObjectWrapper(p)));
// Link the wrapper to the parent PropertyGrid.
base.SelectedObjects = wrapper.ToArray();
}
}
}
错误:
不知道你能不能帮我解决一下问题。
【问题讨论】:
-
这个类的构造函数里有什么?有问题的代码是通过用户调用还是在实例化类时自动发生?如果是自动的,那可能是你的问题,如果你在设计时,你可以绕过构造函数。如果是这样的话,我可以给你代码。
-
ICustomType 是框架类型,还是您自己的自定义类型?
-
@MarcGravell:这是我自己的自定义类型
-
@BobHorn:我添加了构造函数代码..我认为问题不是由它引起的。
-
如果你在构造函数中注释了那一行代码会发生什么?您还有设计时问题吗?
标签: c# .net winforms windows-forms-designer propertygrid