Невозможно добавить элемент управления в форму - PullRequest
3 голосов
/ 17 ноября 2011

Я пытаюсь добавить Usercontrol в форму.UserControl находится в отдельном проекте, чем форма, но в том же решении.Я добавил этот элемент управления в другие формы в прошлом, однако что-то изменилось, и я получаю следующую ошибку:

"Не удалось создать компонент MessageDisplayListControl. Появляется сообщение об ошибке:« Система.Runtime.Serialization.SerializationException: Тип AceXtremeNET.Utilities.Message 'в Assymbly AceXtremeNET, версия = 10.0.0.273, ...... не помечен как сериализуемый. В System.Runtime.Serialization.FormatterServices.InternalGetSerializableMember (тип RuntimeType)at .... "

Элемент управления добавляется к .Designer.cs, однако он не отображается в визуальном графическом интерфейсе.Каждый раз, когда я пытаюсь построить, я получаю несколько ошибок, которые дают ту же самую базовую ошибку, что и выше, что «AceXtremeNET.Utilities.Message» не является Serializable.

---------Изменить ------------------

У моего элемента управления есть следующее свойство, которое может вызвать проблему.

public IList<Message> MessageList {get{return _getList();} {set {_lostList(value);}}

Неткод в элементе управления зависит от этого свойства, поскольку он подразумевал purley как метод доступа get / set.Всякий раз, когда я закомментирую код, кажется, что все работает правильно.В противном случае я могу ошибку, которую я упомянул выше.Как я уже говорил, я получил еще одну ошибку при сборке, и, похоже, это единственное свойство, которое пытается быть сериализованным.

--------- Edit (Stack Trace)------------------

at System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType type)
at System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type type, StreamingContext context)
at System.Runtime.Serialzation.Formatters.Binary.WriteObjectInfo.InitMemberInfo()
at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Type objectType, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, SerializationBinder binder)
at System.Runtime.SerializationFormatters.Binary.ObjectWriter.WriteArray(WriteObjectInfo objectInfo, NameInfo memberNameInfo, WriteObjectInfo memberObjectInfo)
...

--------- Edit (Control Properties) ------------------

public MessageControl MessageDisplay {get{return messageControl1;}} // This is another user control I created.  I've not had any problems with this control.
public MessageListBox {get { return listBox1; } }
public int MessageCount { get { return MessageListBox.Items.Count; }}
public bool ValidSelection { get { return (SelectedIndex >= 0 && SelectedIndex < MessageCount); } }
public Message SelectedMessage { get { return listBox1.SelectedItem as Message; } set { MessageDisplay.Message = Value; } }
public int SelectedIndex { get { return listBox1.SelectedIndex; } set { listBox1.SelectedIndex = value; } }

1 Ответ

6 голосов
/ 17 ноября 2011

читать о Перечисление DesignerSerializationVisibility

поместите этот атрибут в свойство MessageList

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]

в этой ситуации дизайнер потеряет пользовательские изменения в MessageList но если вы установите его на

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]

Дизайнер сохранит содержимое свойства в Designer.cs управляющего хоста

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...