Problem mit designer: "projekt.xy[]" kann nicht in den Typ "projekt.xy[]" konvertiert werden.

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von _DarkForest.

    Problem mit designer: "projekt.xy[]" kann nicht in den Typ "projekt.xy[]" konvertiert werden.

    Hallo,
    wilkommen zu meinem 4. Post heute:
    AN ALLE: Wer sagt "benutz google" oder "setzte da und da einen haltepunkt und prüf das und das", der kann sich die antwort sparen den 1. Ich habe ge-googlt und 2. Man kann in einer resx-datei schwer haltepunkte einfügen.
    Ok, also das problem ist das ich an einem Control arbeite, und wenn ich es ausführe alles ok, aber wenn ich es in ein Control reinziehe und dann den Designer neu lade kommt der Fehler
    Das Objekt mit dem Typ "Controls.ToolBoxItem[]" kann nicht in den Typ "Controls.ToolBoxItem[]" konvertiert werden.

    Genauer gesagt
    Spoiler anzeigen



    bei System.RuntimeType.TryChangeType(Object value,
    Binder binder, CultureInfo culture, Boolean needsSpecialCast)
    bei
    System.RuntimeType.CheckValue(Object value, Binder binder, CultureInfo culture,
    BindingFlags invokeAttr)
    bei
    System.Reflection.RtFieldInfo.UnsafeSetValue(Object obj, Object value,
    BindingFlags invokeAttr, Binder binder, CultureInfo culture)
    bei
    System.Runtime.Serialization.FormatterServices.SerializationSetValue(MemberInfo
    fi, Object target, Object value)
    bei
    System.Runtime.Serialization.ObjectManager.CompleteObject(ObjectHolder holder,
    Boolean bObjectFullyComplete)
    bei
    System.Runtime.Serialization.ObjectManager.DoNewlyRegisteredObjectFixups(ObjectHolder
    holder)
    bei System.Runtime.Serialization.ObjectManager.RegisterObject(Object
    obj, Int64 objectID, SerializationInfo info, Int64 idOfContainingObj, MemberInfo
    member, Int32[] arrayIndex)
    bei
    System.Runtime.Serialization.Formatters.Binary.ObjectReader.RegisterObject(Object
    obj, ParseRecord pr, ParseRecord objectPr, Boolean bIsString)
    bei
    System.Runtime.Serialization.Formatters.Binary.ObjectReader.ParseObjectEnd(ParseRecord
    pr)
    bei
    System.Runtime.Serialization.Formatters.Binary.ObjectReader.Parse(ParseRecord
    pr)
    bei
    System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
    bei
    System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler
    handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain,
    IMethodCallMessage methodCallMessage)
    bei
    System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream
    serializationStream, HeaderHandler handler, Boolean fCheck, Boolean
    isCrossAppDomain, IMethodCallMessage methodCallMessage)
    bei
    System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream
    serializationStream)
    bei
    System.Resources.ResXDataNode.GenerateObjectFromDataNodeInfo(DataNodeInfo
    dataNodeInfo, ITypeResolutionService typeResolver)
    bei
    System.Resources.ResXDataNode.GetValue(ITypeResolutionService
    typeResolver)
    bei
    System.Resources.ResXResourceReader.ParseDataNode(XmlTextReader reader, Boolean
    isMetaData)
    bei System.Resources.ResXResourceReader.ParseXml(XmlTextReader
    reader)


    Was mache ich falsch?

    Wenn man es mir nicht sagt, mach ich immer wieder den selben fehler.

    Grüße
    こんにちわ
    Achte beim stellen von Fragen auf eine genaue Fragestellung, mir passiert das selbst häufig, andere können dir dann nicht so gut helfen.

    _DarkForest schrieb:

    Was mache ich falsch?
    Du hast den Kontext dieses Fehlers nicht gepostet.
    Poste also mal den relevanten Code.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    "Kontext" Was soll das sein?

    EDIT: Der dir bekannte code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Drawing
    2. Imports System.Drawing.drawing2d
    3. Imports System.Windows.Forms
    4. Public Class ToolBox
    5. Inherits UserControl
    6. Sub New()
    7. MyBase.New
    8. MyBase.SetStyle(ControlStyles.UserPaint, True)
    9. MyBase.SetStyle(ControlStyles.SupportsTransparentBackColor, True)
    10. MyBase.SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
    11. End Sub
    12. Private Sub doPaint(sender As Object, e As PaintEventArgs) Handles Me.Paint
    13. e.Graphics.SmoothingMode = SmoothingMode.HighQuality
    14. Try
    15. Dim pen1 As New Pen(Me.ForeColor, 5)
    16. Dim BrushBackground As New SolidBrush(Me.BackColor)
    17. e.Graphics.FillRectangle(BrushBackground, New Rectangle(New Point(0, 0), New Point(Me.Width - 1, Me.Height - 1)))
    18. e.Graphics.DrawRectangle(pen1, New Rectangle(New Point(0, 0), New Point(Me.Width - 1, Me.Height - 1)))
    19. Dim cp = 0
    20. Catch ex As Exception
    21. e.Graphics.DrawLine(Pens.Red, New Drawing.Point(0, 0), New Drawing.Point(Me.Size.Width, Me.Size.Height))
    22. e.Graphics.DrawLine(Pens.Red, New Drawing.Point(Me.Size.Width, 0), New Drawing.Point(0, Me.Size.Height))
    23. e.Graphics.DrawString(ex.ToString, Me.Font, Brushes.Black, New Point(0, 0))
    24. End Try
    25. End Sub
    26. Private _ToolboxItems As New List(Of ToolBoxItem)
    27. Public Property ToolboxItems() As List(Of ToolBoxItem)
    28. Get
    29. Return _ToolboxItems
    30. End Get
    31. Set(ByVal value As List(Of ToolBoxItem))
    32. Try
    33. _ToolboxItems.Clear()
    34. For Each i As ToolBoxItem In value
    35. _ToolboxItems.Add(i)
    36. Next
    37. Catch ex As Exception
    38. Console.WriteLine("Controls.dll|ControlBox (handle " & Me.Handle.ToString & ")] Failed to change Propertys! Undo...")
    39. End Try
    40. End Set
    41. End Property
    42. End Class

    こんにちわ
    Achte beim stellen von Fragen auf eine genaue Fragestellung, mir passiert das selbst häufig, andere können dir dann nicht so gut helfen.
    @_DarkForest Was ist ToolBoxItem?
    Was muss ich tun, damit dieser Fehler auftritt?
    Bei mir kompiliert es.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ok, hier mal alle releventen Codes

    ToolBoxItem
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Drawing
    2. <Serializable()>
    3. Public Class ToolBoxItem
    4. Sub New()
    5. End Sub
    6. Private _itemSection As String
    7. Public Property ItemSection() As String
    8. Get
    9. Return _itemSection
    10. End Get
    11. Set(ByVal value As String)
    12. _itemSection = value
    13. End Set
    14. End Property
    15. Private _itemModel As String
    16. Public Property ItemModel() As String
    17. Get
    18. Return _itemModel
    19. End Get
    20. Set(ByVal value As String)
    21. _itemModel = value
    22. End Set
    23. End Property
    24. Private _itemImage As Image
    25. Public Property ItemImage() As Image
    26. Get
    27. Return _itemImage
    28. End Get
    29. Set(ByVal value As Image)
    30. _itemImage = value
    31. End Set
    32. End Property
    33. End Class



    ToolBox
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Drawing
    2. Imports System.Drawing.drawing2d
    3. Imports System.Windows.Forms
    4. Public Class ToolBox
    5. Inherits UserControl
    6. Sub New()
    7. MyBase.New
    8. MyBase.SetStyle(ControlStyles.UserPaint, True)
    9. MyBase.SetStyle(ControlStyles.SupportsTransparentBackColor, True)
    10. MyBase.SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
    11. End Sub
    12. Private Sub doPaint(sender As Object, e As PaintEventArgs) Handles Me.Paint
    13. e.Graphics.SmoothingMode = SmoothingMode.HighQuality
    14. Try
    15. Dim pen1 As New Pen(Me.ForeColor, 5)
    16. Dim BrushBackground As New SolidBrush(Me.BackColor)
    17. e.Graphics.FillRectangle(BrushBackground, New Rectangle(New Point(0, 0), New Point(Me.Width - 1, Me.Height - 1)))
    18. e.Graphics.DrawRectangle(pen1, New Rectangle(New Point(0, 0), New Point(Me.Width - 1, Me.Height - 1)))
    19. Dim cp = 0
    20. Catch ex As Exception
    21. e.Graphics.DrawLine(Pens.Red, New Drawing.Point(0, 0), New Drawing.Point(Me.Size.Width, Me.Size.Height))
    22. e.Graphics.DrawLine(Pens.Red, New Drawing.Point(Me.Size.Width, 0), New Drawing.Point(0, Me.Size.Height))
    23. e.Graphics.DrawString(ex.ToString, Me.Font, Brushes.Black, New Point(0, 0))
    24. End Try
    25. End Sub
    26. Private _ToolboxItems As New List(Of ToolBoxItem)
    27. Public Property ToolboxItems() As List(Of ToolBoxItem)
    28. Get
    29. Return _ToolboxItems
    30. End Get
    31. Set(ByVal value As List(Of ToolBoxItem))
    32. Try
    33. _ToolboxItems.Clear()
    34. For Each i As ToolBoxItem In value
    35. _ToolboxItems.Add(i)
    36. Next
    37. Catch ex As Exception
    38. Console.WriteLine("Controls.dll|ControlBox (handle " & Me.Handle.ToString & ")] Failed to change Propertys! Undo...")
    39. End Try
    40. End Set
    41. End Property
    42. End Class



    (Das Projekt wo die Form ist) Form-Designer-Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    2. Partial Class frm_editor
    3. Inherits System.Windows.Forms.Form
    4. 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
    5. <System.Diagnostics.DebuggerNonUserCode()> _
    6. Protected Overrides Sub Dispose(ByVal disposing As Boolean)
    7. Try
    8. If disposing AndAlso components IsNot Nothing Then
    9. components.Dispose()
    10. End If
    11. Finally
    12. MyBase.Dispose(disposing)
    13. End Try
    14. End Sub
    15. 'Wird vom Windows Form-Designer benötigt.
    16. Private components As System.ComponentModel.IContainer
    17. 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
    18. 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
    19. 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
    20. <System.Diagnostics.DebuggerStepThrough()> _
    21. Private Sub InitializeComponent()
    22. Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frm_editor))
    23. Me.ToolBox1 = New Controls.ToolBox()
    24. Me.SuspendLayout()
    25. '
    26. 'ToolBox1
    27. '
    28. Me.ToolBox1.Location = New System.Drawing.Point(51, 52)
    29. Me.ToolBox1.Name = "ToolBox1"
    30. Me.ToolBox1.Size = New System.Drawing.Size(150, 150)
    31. Me.ToolBox1.TabIndex = 0
    32. Me.ToolBox1.ToolboxItems = CType(resources.GetObject("ToolBox1.ToolboxItems"), System.Collections.Generic.List(Of Controls.ToolBoxItem))
    33. '
    34. 'frm_editor
    35. '
    36. Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
    37. Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
    38. Me.ClientSize = New System.Drawing.Size(284, 262)
    39. Me.Controls.Add(Me.ToolBox1)
    40. Me.Name = "frm_editor"
    41. Me.Text = "frm_editor"
    42. Me.ResumeLayout(False)
    43. End Sub
    44. Friend WithEvents ToolBox1 As Controls.ToolBox
    45. End Class
    こんにちわ
    Achte beim stellen von Fragen auf eine genaue Fragestellung, mir passiert das selbst häufig, andere können dir dann nicht so gut helfen.
    @_DarkForest Dieser Dein Code läuft bei mir, wenn ich den Namespace Controls im Designer wegnehme.
    Ggf. hast Du noch nen Dreher bei dem Namen der Form, wo vorher Form1 stand.
    WindowsApplication1.zip
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ärm die Toolbox und ToolboxItem sind in einer DLL

    Und bei mir funzt der Code nicht:
    Spoiler anzeigen





    Um mögliche Datenverluste zu verhindern, müssen vor dem
    Laden des Designers folgende Fehler behoben werden:



    2 Fehler

    Ignorieren und
    fortfahren



    Warum wird diese Seite
    anzeigt?


    Der Typ
    "WindowsApplication1.ToolBox" wurde nicht gefunden. Stellen Sie sicher, dass auf
    die Assembly, die diesen Typ enthält, verwiesen wird. Wenn dieser Typ Teil Ihres
    Entwicklungsprojekts ist, stellen Sie sicher, dass das Projekt mithilfe der
    Einstellungen für die aktuelle Plattform oder eine beliebige CPU erstellt wurde.





    Instanzen dieses Fehlers (1)

    1.

    Für diesen Fehler sind keine Stapelüberwachungs- oder
    Fehlerzeileninformationen verfügbar.



    Hilfe zu diesem Fehler

    Es konnte kein diesem Fehler zugeordnetes Hilfethema
    gefunden werden. Windows
    Forms-Entwurfszeit-Fehlerliste prüfen



    Forumbeiträge zu diesem Fehler

    Die MSDN-Foren nach Beiträgen zu diesem
    Fehler durchsuchen




    Die Variable ToolBox1 wurde nicht
    deklariert oder nicht zugeordnet.



    Gehe zu Code





    Instanzen dieses Fehlers (1)

    1.

    WindowsApplication1 Form1.Designer.vb Zeile: 42
    Spalte: 1

    Aufrufliste anzeigen

    bei
    System.ComponentModel.Design.Serialization.CodeDomSerializerBase.Error(IDesignerSerializationManager
    manager, String exceptionText, String helpLink)
    bei
    System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager
    manager, String name, CodeExpression expression)
    bei
    System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager
    manager, String name, CodeExpression expression)
    bei
    System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager
    manager, CodeStatement statement)



    Hilfe zu diesem Fehler

    MSDN-Hilfe



    Forumbeiträge zu diesem Fehler

    Die MSDN-Foren nach Beiträgen zu diesem
    Fehler durchsuchen

    こんにちわ
    Achte beim stellen von Fragen auf eine genaue Fragestellung, mir passiert das selbst häufig, andere können dir dann nicht so gut helfen.

    _DarkForest schrieb:

    Ärm die Toolbox und ToolboxItem sind in einer DLL
    So unwichtig Zeugs hätte ich auch nicht gepostet. X(
    Auch mit den beiden Controls in einer sepataren DLL funktioniert der Code problemlos.
    WindowsApplication1.zip
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany

    "problemlos"
    Bild siehe spoiler
    Bilder
    • fehler-unserialisiert.png

      149,69 kB, 1.366×768, 608 mal angesehen
    こんにちわ
    Achte beim stellen von Fragen auf eine genaue Fragestellung, mir passiert das selbst häufig, andere können dir dann nicht so gut helfen.
    @_DarkForest Poste mal eine VOLLSTÄNDIGE Beschreibung:
    Wenn ich dies und das tue, kommt Deine Exception.
    =======
    Pack die Controls zurück in das Hauptprogramm. Bearbeite sie, bis alles läuft und dann versuch, sie in eine DLL zu packen.
    Bei ToolBox und ToolBoxItem schreibst Du Me.InitializeComponent() in den Konstruktor.
    =======
    Ich denke, das liegt an der List(Of ToolBoxItem).
    Gugst Du z.B. hier.

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „RodFromGermany“ ()

    Habe ich gemacht aber nun.............Kann mir den jemand mal sagen was an diesem CODE falsch ist. Also einen Hilfreichen kommentar.


    こんにちわ
    Achte beim stellen von Fragen auf eine genaue Fragestellung, mir passiert das selbst häufig, andere können dir dann nicht so gut helfen.
    Poste mal den relevanten Abschnitt der ResX-Datei.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Der Fehler erscheint nichtmehr, dafür aber

    Spoiler anzeigen

    ---------------------------
    Microsoft Visual Studio
    ---------------------------
    Fehler beim Erstellen der Komponente ToolBox. Die Fehlermeldung:

    System.Runtime.Serialization.SerializationException: Der Typ "System.Windows.Forms.UserControl" in Assembly "System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" ist nicht als serialisierbar gekennzeichnet.

    bei System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType type)

    bei System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type type, StreamingContext context)

    bei System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo()

    bei System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Type objectType, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, SerializationBinder binder)

    bei System.Runtime.Serialization.Formatters.Binary.ObjectWriter.WriteArray(WriteObjectInfo objectInfo, NameInfo memberNameInfo, WriteObjectInfo memberObjectInfo)

    bei System.Runtime.Serialization.Format...
    ---------------------------
    OK
    ---------------------------



    こんにちわ
    Achte beim stellen von Fragen auf eine genaue Fragestellung, mir passiert das selbst häufig, andere können dir dann nicht so gut helfen.
    Ich stimme mit RFG überein, es liegt vermutlich an der List(of T ...
    Mit welchen Serialisierungs-Attributen hast Du die Property denn dekoriert?
    //Edit:
    Ich sehe gerade, mit garkeinem. Versuch doch mal:

    VB.NET-Quellcode

    1. <DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>
    2. Public Property ToolboxItems() As List(Of ToolBoxItem)
    3. ...
    So weit war ich inzwischen auch. Frau Google flüsterte mir dies ins Ohr. Verfolge das mal.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke @us4711 und @RodFromGermany

    Der beitrag mit dem Serialisieren hat mir sehr geholfen, danke us4711 ....darauf hätte ich kommen müssen.

    Und danke an RodFormGermany für das "beantworten" (gegenfragen) meiner fragen.

    DANKE!

    Grüße
    こんにちわ
    Achte beim stellen von Fragen auf eine genaue Fragestellung, mir passiert das selbst häufig, andere können dir dann nicht so gut helfen.