如何知道控件是否处于设计时
本文关键字:何知道 控件 是否 | 更新日期: 2023-09-27 18:14:40
我有一个实现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#中是否有类似的设计时标志?使用条件编译是不是更好?
检查DesignMode是否为true或false。它是一个属于控件基类的属性。
标志应为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文档
使用底座的DesignMode
属性。这将告诉您模式。