Hi all.
2 вопроса по propertygrid контролу
Значит показываю в propertygrid объект такого класса:
internal class C
{
private string _s;
private bool _b;
[Description("String value for tests")]
[Category("TestCategory")]
[DefaultValue("defaultString")]
public string S
{
get{return _s;}
set{_s=value;}
}
[Description("Boolean value for tests")]
[Category("TestCategory")]
[DefaultValue(true)]
public bool B
{
get{return _b;}
set{_b=value;}
}
}
Вопрос номер 1: почему значение заданое в [DefaultValue] не отображается?? Зачем оно тогда вообще нужно. Дефолтное значение отображается только при явной инициализации полей: private string _s="DefaultValue"; например.
Вопрос номер 2: как сделать чтобы при значении B=false поле S нельзя было редактировать? Иными словами — при установке B в false из propertygrid свойство S становится ReadOnly-добавляется аттрибут ReadOnlyAttribute?
Здравствуйте, Real_Asv, Вы писали:
R_A>Вопрос номер 1: почему значение заданое в [DefaultValue] не отображается?? Зачем оно тогда вообще нужно. Дефолтное значение отображается только при явной инициализации полей: private string _s="DefaultValue"; например.
С помощью атрибута DefaultValue можно будет сбросить (Reset) значение в дефолтное состояние. Явная инициализация все равно требуется.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, Real_Asv, Вы писали:
R_A>Вопрос номер 2: как сделать чтобы при значении B=false поле S нельзя было редактировать? Иными словами — при установке B в false из propertygrid свойство S становится ReadOnly-добавляется аттрибут ReadOnlyAttribute?
Можно бросать исключение

:: Hello, I'm your mind [[2005 — Track]]
class c{static void Main(){
string s="class c{{static void Main(){{string s={0}{1}{0};System.Console.Write(s,'{0}',s);}}}}";
System.Console.Write(s,'"',s);}}
IMHO в таких случаях лучше использовать UITypeEditor. Понагляднее будет. Подробная информация содержится в MSDN.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
> Вопрос номер 2: как сделать чтобы при значении B=false поле S нельзя было редактировать? Иными словами — при установке B в false из propertygrid свойство S становится ReadOnly-добавляется аттрибут ReadOnlyAttribute?
у класса определить свой TypeConverter
в котором надо переопределить методы:
1) GetPropertiesSupported — возвращает true
2) метод PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes)
из метода возвращать дескрипторы свойств с необходимыми аттрибутами.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение