Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DesignerSerialization свойства-коллекции, сохранение свойства-коллекции 
:(
    Опции темы
olyx
Дата 22.5.2008, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 26.1.2007

Репутация: нет
Всего: нет



доброго вам всем времени суток. Пишу свой первый контрол - помогите чайнику smile

У контрола есть свойство - коллекция обьектов 
Код

        [TypeConverter(typeof(CollectionTypeConverter))]
        [DesignerSerializationVisibility( DesignerSerializationVisibility.Content)]
        public DataObjectProperetyCollection Items
        {
            get { return _Items; }
            set { _Items = value; }
        }

которая на этапе разработки редактируется стандартным CollectionEditor-ом.
Эта коллекция содержит обьекты некоторого типа DataObjectPropertyItem (тип для хранения чего-там-либо).
Код

class DataObjectProperetyCollection : ICollection , IList   
    {
        private DataObjectPropertyItem[] properties;
        private int propCount;

        public void CopyTo(Array array, int index)
        {
            Array.Copy(this.properties, 0, array, index, this.Count);
        }

        public int Count
        {
            get { return this.propCount; }
        }

        public bool IsSynchronized
        {
            get { return false; }
        }

        public object SyncRoot
        {
            get { return null; }
        }

        public IEnumerator GetEnumerator()
        {
            throw new Exception("The method or operation is not implemented.");
        }

        public int Add(object value)
        {
            this.properties[this.propCount++] = (DataObjectPropertyItem)value;
            return (this.propCount - 1);
        }

        public void Clear()
        {
            this.propCount = 0;
        }

        public bool Contains(object value)
        {
            return (this.IndexOf(value) >= 0);
        }

        public int IndexOf(object value)
        {
            return Array.IndexOf<DataObjectPropertyItem>(this.properties, (DataObjectPropertyItem)value, 0, this.propCount);
        }

        public void Insert(int index, object value)
        {
            if (index < this.propCount)
            {
                Array.Copy(this.properties, index, this.properties, index + 1, this.propCount - index);
            }
            this.properties[index] = (DataObjectPropertyItem)value;
            this.propCount++;
        }

        public bool IsFixedSize
        {
            get { return false; }
        }

        public bool IsReadOnly
        {
            get { return false; }
        }

        public void Remove(object value)
        {
            int index = this.IndexOf(value);
            if (index != -1)
            {
                this.RemoveAt(index);
            }
        }

        public void RemoveAt(int index)
        {
            if (index < (this.propCount - 1))
            {
                Array.Copy(this.properties, index + 1, this.properties, index, (this.propCount - index) - 1);
            }
            this.properties[this.propCount - 1] = null;
            this.propCount--;
        }

        public object this[int index]
        {
            get
            {
                return this[index];
            }
            set
            {
                if (index >= this.propCount)
                {
                    throw new IndexOutOfRangeException();
                }
                if ((value != null) && !(value is DataObjectPropertyItem))
                {
                    throw new ArgumentException("value");
                }
                this.properties[index] = (DataObjectPropertyItem)value;
            }

        }
    }

делал по советам сзятым с http://www.realcoding.net/article/view/4411. Реализацию интерфейсов ICollection , IList взял из 
.нет библиотеки при помощи рефлектора.

Проблема 1
свойство контрола указывает на коллекцию обьектов определенного типа. А в дизайн-тайм в редакторе коллекции светится Object.

Проблема 2
даже если в коллекцию я добавляю несколько элементов, то при закрытии редактора коллекции свойсто Items контрола не сохраняется. Ругается на The object '<мой контрол>' returned null for the property Items but this is not allowed. Т.е. насколько я понимаю редактор коллекций не возращает то что я там добавил, и соответственно свойство Items = null.

Подскажите плиз, ато уж который день бьюсь над задачей smile



Это сообщение отредактировал(а) olyx - 22.5.2008, 15:57
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0580 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.