我嘗試深入複製ToolStripMenuItems以將副本添加到不同的其他ToolStripMenu。有沒有辦法深入複製Winforms控件?
當我試圖序列它返回Nothing(4號線在下面的代碼)並沒有作出這樣的ToolStripMenuItem的新實例的ToolStripMenuItem。
Public Module Extensions
<System.Runtime.CompilerServices.Extension()> _
Public Function DeepCopy(Of T)(ByVal Obj As T) As T
If Obj.GetType().IsSerializable = False Then Return Nothing
Using MStream As New MemoryStream
Dim Formatter As New BinaryFormatter
Formatter.Serialize(MStream, Obj)
MStream.Position = 0
Return DirectCast(Formatter.Deserialize(MStream), T)
End Using
End Function
End Module
我的副本
Dim tsmiCopy As ToolStripMenuItem = tsmiOriginal.DeepCopy()
這是這一行:'如果Obj.GetType()IsSerializable = false,那麼返回Nothing'返回'Nothing'。如果您要刪除該行,您將得到一個異常,指出組件不可序列化。 –
查看您的designer.cs文件的代碼。只需複製這些代碼並將它們放入方法中,並在需要工具條的克隆副本時調用該方法,請參閱@SuperPeanut答案。 –