PropertyGrid control
От: Real_Asv Россия  
Дата: 17.12.05 10:54
Оценка:
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?
Control yourself.
Re: PropertyGrid control
От: YeTHee  
Дата: 17.12.05 12:41
Оценка:
Здравствуйте, Real_Asv, Вы писали:

R_A>Вопрос номер 1: почему значение заданое в [DefaultValue] не отображается?? Зачем оно тогда вообще нужно. Дефолтное значение отображается только при явной инициализации полей: private string _s="DefaultValue"; например.


С помощью атрибута DefaultValue можно будет сбросить (Reset) значение в дефолтное состояние. Явная инициализация все равно требуется.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: PropertyGrid control
От: Badenweiler Россия http://helloimyourmind.com/
Дата: 17.12.05 13:08
Оценка:
Здравствуйте, Real_Asv, Вы писали:

R_A>Вопрос номер 2: как сделать чтобы при значении B=false поле S нельзя было редактировать? Иными словами — при установке B в false из propertygrid свойство S становится ReadOnly-добавляется аттрибут ReadOnlyAttribute?


Можно бросать исключение
:: Hello, I'm your mind [[2005 — Track]]
Re[2]: PropertyGrid control
От: Real_Asv Россия  
Дата: 17.12.05 13:25
Оценка:
R_A>>Вопрос номер 2: как сделать чтобы при значении B=false поле S нельзя было редактировать? Иными словами — при установке B в false из propertygrid свойство S становится ReadOnly-добавляется аттрибут ReadOnlyAttribute?

B>Можно бросать исключение


Нет, задача в общем то такая: в одном из свойств которые в propertygrid юзер выбирает размер бумаги для печати. Есть еще два свойства — paper height и paper width. Если юзер выбрал Custom размер бумаги, длина и ширина бумаги должны быть доступны для редактирования, если размер бумаги стандартный — длину и ширину редактировать конечно низя.
Control yourself.
Re[2]: PropertyGrid control
От: Аноним  
Дата: 17.12.05 14:58
Оценка:
IMHO в таких случаях лучше использовать UITypeEditor. Понагляднее будет. Подробная информация содержится в MSDN.

Offline сборники часто задаваемых вопросов [от 15 ноября]:
[[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236958.aspx]Всe[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236957.aspx]Windows Forms[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236955.aspx]Common[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236954.aspx]ASP.NET[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236953.aspx]ADO.NET[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236952.aspx]UG[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236951.aspx]WSS[/url]]
2 min @ 28.8 kbps


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[3]: PropertyGrid control
От: olegz_at_dw  
Дата: 17.12.05 17:39
Оценка:
Здравствуйте, Real_Asv, Вы писали:

R_A>>>Вопрос номер 2: как сделать чтобы при значении B=false поле S нельзя было редактировать? Иными словами — при установке B в false из propertygrid свойство S становится ReadOnly-добавляется аттрибут ReadOnlyAttribute?


Переопределить GetProperties в TypeConverter'е и скрывать свойство в зависимости от значения B.
Если очень хочется что-то показывать для S, то можно сделать еще одно read-only свойство типа с именем, например -S и показывать его взамен S.
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);}}
PropertyGrid control
От: Аноним  
Дата: 17.12.05 21:24
Оценка:
> Вопрос номер 2: как сделать чтобы при значении B=false поле S нельзя было редактировать? Иными словами — при установке B в false из propertygrid свойство S становится ReadOnly-добавляется аттрибут ReadOnlyAttribute?

у класса определить свой TypeConverter
в котором надо переопределить методы:
1) GetPropertiesSupported — возвращает true
2) метод PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes)
из метода возвращать дескрипторы свойств с необходимыми аттрибутами.


---
см.: TaskRunner, PopupWindow, Html2XmlConverter, Win32ResourceManager, MenuBuilder, Lens .


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.