2011-11-16 191 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

相關問題