无法将控件添加到表单中

我正在尝试将Usercontrol添加到表单中。 UserControl与表单位于一个单独的项目中,但是在同一个解决方案中。 我已将此控件添加到过去的其他表单中,但是,某些内容已更改,我收到以下错误:

“无法创建组件MessageDisplayListControl 。错误消息如下:’System.Runtime.Serialization.SerializationException:在Assymbly AceXtremeNET中键入AceXtremeNET.Utilities.Message’,版本= 10.0.0.273,……未标记为可序列化。在System.Runtime.Serialization.FormatterServices.InternalGetSerializableMember(RuntimeType type)at ….“

控件确实会添加到.Designer.cs ,但是它不会显示在可视GUI中。 每次我尝试构建时,我会得到多个错误,这些错误会产生与上面相同的基本错误,即’AceXtremeNET.Utilities.Message’不是Serializable。

———编辑——————

我的控件具有以下属性,似乎问题。

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

控件中的代码不依赖于此属性,因为它意味着purley作为get / set访问器。 每当我注释掉代码时,Everything似乎都能正常工作。 否则我可以上面提到的错误。 我之前提到过,我收到了另一个关于构建的错误,看起来这是唯一尝试序列化的Property。

———编辑(堆栈跟踪)——————

 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) ... 

———编辑(控制属性)——————

 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; } } 

阅读DesignerSerializationVisibility枚举

将此属性放在MessageList属性上

 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 

在这种情况下,设计器将丢失MessageList中的用户更改,但如果将其设置为

 [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 

Designer会将属性内容保存在控制主机的Designer.cs中