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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сериализовать UserControl. не хочет, ругатся на член-интерфейс 
:(
    Опции темы
Kakadu
Дата 19.4.2009, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



user posted image
Код

public class Graph : UserControl {
        ...
        public void Serialize(string FileName) {
            XmlSerializer xmls = new XmlSerializer(typeof(UserControl));
            TextWriter writer = new StreamWriter(FileName);
            xmls.Serialize(writer, this);
            writer.Close();
        }
}

Код

System.InvalidOperationException: Возникла ошибка при отражении типа "System.Windows.Forms.UserControl". ---> 
System.InvalidOperationException: Не удается сериализовать член "System.ComponentModel.Component.Site" типа "System.ComponentModel.ISite". Дополнительные сведения см. во внутреннем исключении. ---> 
System.NotSupportedException: Невозможно сериализовать член System.ComponentModel.Component.Site типа System.ComponentModel.ISite, т.к. он является интерфейсом.

Как правильно сериализовать? Или надо использовать DesignerSerializer?
Код

    [DesignerSerializer("System.Windows.Forms.Design.ControlCodeDomSerializer, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.ComponentModel.Design.Serialization.CodeDomSerializer, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
    public class Control : Component, IDropTarget, ISynchronizeInvoke, IWin32Window, IBindableComponent, IComponent, IDisposable {
...
}

Про CodeDomSerializer в MSDN


--------------------
Добрые мариносы долго кормили украдкой маленьких зерлингов. От этой украдки зерлинги пухли и дохли
PM MAIL   Вверх
DragonFire
Дата 19.4.2009, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

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



Включи описание интерфейса...
http://msdn.microsoft.com/en-us/library/sy...eattribute.aspx
Код

[XmlInclude(ISite)]

Или как-то так... если не скомпилится то typeof попробуй...

Это сообщение отредактировал(а) DragonFire - 19.4.2009, 23:49


--------------------
PM MAIL ICQ   Вверх
Kakadu
Дата 22.4.2009, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



та же фигня.


--------------------
Добрые мариносы долго кормили украдкой маленьких зерлингов. От этой украдки зерлинги пухли и дохли
PM MAIL   Вверх
PashaPash
Дата 22.4.2009, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

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



Kakadu, вопрос - а зачем сериализовать UserControl и что ты под этим вообще понимаешь? У контрола есть свойство Parent - его сериализовать? А координаты контрола на форме?
Зачем вообще Graph - UserControl, это ж структура данных.


--------------------
PM MAIL WWW   Вверх
Kakadu
Дата 22.4.2009, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я пытаюсь сотворить рисовалку графа в стиле Delphi.
user posted image
Идея была такая: если рисовать ребро просто соединяя линией две вершины, то несколько ребер, соединяющих две одинаковые вершины сольются и нарисуются друг на друге, поэтому появилась идея представлять ребро в виде ломаной (а потом модернизация - в виде кривой Безье). Но в этом случае у меня должно быть что-то за что можно зацепиться мышой и двигать; и ничего лучше как оформить это через уже существующий элемент управления я не придумал. 


--------------------
Добрые мариносы долго кормили украдкой маленьких зерлингов. От этой украдки зерлинги пухли и дохли
PM MAIL   Вверх
PashaPash
Дата 22.4.2009, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

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



Kakadu, отдели объект данных Граф от элемента управления Граф, то же для ребер и вершин. Я писал тебе об этом дней 9 назад, в топике про наследование). Хочешь автоматической перерисовки - реализуй в классах данных интерфейс INotifyPropertyChanged, или отдельные события для каждого свойства, подпишись на них в классах элементов управления.


--------------------
PM MAIL WWW   Вверх
Bogdan1024
Дата 23.4.2009, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

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



Сериализуй данные, а не контрол, мэн.


--------------------
user posted image
PM MAIL   Вверх
Kakadu
Дата 25.4.2009, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Получается пока вот такое вот
user posted image
Теперь надо понять как к каждому элементу Графа привязать отдельный GraphElementControl. Наверное как-то через Dictionary....

P.S. Надо будет ещё как-то сделать чтобы вместе с GraphElementControl менялось какое-то свойство у Edge. Пробовал писать через байндинг, но запихивать это в модель графа не хочется. Наверное к GraphElementControl  надо будет добавлять ссылки на поля элементов графа. Только проблема в том что все эти поля не ссылки а value-type.

Это сообщение отредактировал(а) Kakadu - 25.4.2009, 21:15


--------------------
Добрые мариносы долго кормили украдкой маленьких зерлингов. От этой украдки зерлинги пухли и дохли
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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