Mam klasy (kontrola), wdrażanie ICustomTypeDescriptor, który jest używany zarówno w czasie projektowania i wykonywania przez PropertyGrid do dostosowywania. Muszę eksponować różne właściwości w czasie projektowania (standardowe właściwości kontrolne, takie jak width
, height
itd.) Oraz w czasie wykonywania, gdy właściwość PropertyGrid jest używana w moim programie do zmiany innych właściwości tego formantu.Jak sprawdzić, czy kontrola jest w czasie projektowania, czy nie?
Moje kod jest podobny:
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;
}
}
}
Czy istnieje analogowe flagą czasu projektowania w języku C#? Czy może lepiej użyć kompilacji warunkowej?
Czy mówisz o wpf lub winform? –
Możliwy duplikat * [Jak sprawdzić, czy kod .NET jest uruchamiany przez projektanta Visual Studio] (http://stackoverflow.com/questions/73515/how-to-tell-if-net-code-is-being- run-by-by-visual-studio-designer) *. –