我有一个类(控件),实现了ICustomTypeDescriptor,它在设计时和PropertyGrid的运行时都用于自定义。我需要在设计时公开不同的属性(标准控件属性,如width
,height
等),并在运行时,在我的程序中使用PropertyGrid来更改该控件的其他属性
我的代码就像:
class MyControl : UserControl, ICustomTypeDescriptor
{
//Some code..
public PropertyDescriptorCollection GetProperties(Attribute[] attributes)
{
return GetProperties();
}
public PropertyDescriptorCollection GetProperties()
{
//I need to do something like this:
if (designTime)
{ //Expose standart controls properties
return TypeDescriptor.GetProperties(this, true);
}
else
{
//Forming a custom property descriptor collection
PropertyDescriptorCollection pdc = new PropertyDescriptorCollection(null);
//Some code..
return pdc;
}
}
}
C#中的设计时标志是否有模拟?使用条件编译可能更好吗?
答案 0 :(得分:11)
检查DesignMode是真还是假。它是属于控件基类的属性。
答案 1 :(得分:8)
标志应为DesignMode
。因此,您的代码应如下所示
public PropertyDescriptorCollection GetProperties()
{
//I need to do something like this:
if (this.DesignMode)
{ //Expose standart controls properties
return TypeDescriptor.GetProperties(this, true);
}
else
{ //Forming a custom property descriptor collection
PropertyDescriptorCollection pdc = new PropertyDescriptorCollection(null);
//Some code..
return pdc;
}
}
以下是MSDN doc。
答案 2 :(得分:3)
使用基础的DesignMode
属性。这将告诉您有关模式的信息。