2011-11-16 135 views
3

我正在尝试将一个Usercontrol添加到窗体。 UserControl与表单不在一个单独的项目中,但处于相同的解决方案中。我加入这个控制其他形式的过去,然而,有些东西已经改变了,我得到了以下错误:无法将控件添加到窗体

"Failed to create the component MessageDisplayListControl . The error message follows: 'System.Runtime.Serialization.SerializationException: Type AceXtremeNET.Utilities.Message' in Assymbly AceXtremeNET, Version=10.0.0.273,...... is not marked as serializable. at System.Runtime.Serialization.FormatterServices.InternalGetSerializableMember(RuntimeType type) at ...."

控制也被添加到.Designer.cs,但是,它不会在可视化GUI显示。每次我尝试构建时,都会得到多个错误,它们给出与上面相同的基本错误,即'AceXtremeNET.Utilities.Message'不是可序列化的。

---------编辑------------------

我的控制器有出现问题的下列财产。

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

控件中没有代码依赖于此属性,因为它意味着purley作为get/set访问器。 每当我将代码注释掉时,一切似乎都正常工作。否则,我可以在上面提到的错误。正如我前面提到的,我已经收到了另一个构建错误,看起来这是唯一试图进行序列化的属性。

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

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

你更新到的AceXtremeNET控件的新版本? –

+0

什么是异常的堆栈跟踪? – svick

+0

@Scott:我有。 AceXtremeNET控件实际上是我自己的项目,是VS解决方案的一部分。这是解决方案的第一个构建目标。 – Neal

回答

6

了解DesignerSerializationVisibility Enumeration

把这个属性上MessageList中的财产

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
在这种情况下,设计师将

丢失的用户改变MessageList中的 ,但如果你将其设置为

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 

设计将保存属性的内容,在Designer.cs控制主机

+0

谢谢!我会查看你提供的信息,并在明天发布我的发现。此外,我添加了我的控件所具有的属性列表。 – Neal

相关问题