Re[6]: Нужен совет как быть с PropertyGrid
От: Proletarius  
Дата: 25.08.05 15:29
Оценка:
Здравствуйте, andreich78, Вы писали:

A>это я написал про интерфейс IPropertyValueUIService

A>вешает децельные картинки в столбце названий и бросает наружу сообщения о двойных щелчках по картинкам.
A>еще заявлена возможность изменять тултип свойства в гриде, но, похоже не реализован.
A>интерфейс поддерживается в design-time, нов рантайме потребуется собственная реализация ISite на родительской форме. или через рефлекшн присвоить пару свойств.
A>кстати способ с отслеживанием кликов через рефлекшн — самый надежный.

Это я. Завел себе логин.
А я думал, что про GetPaintValueSupported и PaintValue у UITypeEditor.
Кстати, Dog написал, что UITypeEditor и TypeConverter помогут с вопросом ввода по маске.
Я что-то не вижу каким образом.

Про реализацию ISite, можно подробнее, не укладывается в голове как через реализацию свойств:
Component,
Container,
DesignMode,
Name,
можно потом через GetService запросить IPropertyValueUIService, у кого? В примере, что-то неясно, класс со свойствами описывает еще свойство типа ISite, а в нем у себя запрашивает этот интерфейс:
        public override System.ComponentModel.ISite Site
        {
            get
            {
                return base.Site;
            }
            set
            {                
                if( value != null )
                {
                    base.Site = value;
                    IPropertyValueUIService uiService = (IPropertyValueUIService)this.GetService(typeof(IPropertyValueUIService));
                    if( uiService != null )                    
                        uiService.AddPropertyValueUIHandler( new PropertyValueUIHandler(this.marginPropertyValueUIHandler) );                                        
                }
                else
                {
                    IPropertyValueUIService uiService = (IPropertyValueUIService)this.GetService(typeof(IPropertyValueUIService));
                    if( uiService != null )                    
                        uiService.RemovePropertyValueUIHandler( new PropertyValueUIHandler(this.marginPropertyValueUIHandler) );                                        
                    base.Site = value;
                }
            }
        }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.