Invalid Resx File

  • VB.NET

Es gibt 71 Antworten in diesem Thema. Der letzte Beitrag () ist von Drahuverar.

    @KingTimon Poste den neuen Code und sag, was werden soll.
    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!
    clsFile.vb
    Spoiler anzeigen
    ​<Serializable>
    Public Class clsFile
    Public Property [Elements] As New List(Of FileComponents.Element)
    Public Property [Lines] As New List(Of FileComponents.Line)
    Public Property [Filling] As New FileComponents.Specific.Filling

    Sub New()

    End Sub
    End Class

    Namespace FileComponents

    <Serializable>
    Public Class Element
    Public Property [Location] As New Point(0, 0)
    Public Property [Size] As New Size(100, 50)

    End Class

    <Serializable>
    Public Class Form
    Inherits Element

    Public Property [Filling] As New FileComponents.Specific.Filling
    Public Property [Border] As New FileComponents.Specific.Border
    End Class

    <Serializable>
    Public Class Line
    Public Property [Point1] As Point
    Public Property [Point2] As Point
    Public Property [Ctl1] As Control
    Public Property [Ctl2] As Control
    Public Property [Style] As FileComponents.Specific.LineStyle = FileComponents.Specific.LineStyle.Straight
    Public Property [Pen] As New Pen(Color.Black)

    Sub New()
    End Sub
    Sub New(ByVal Point1 As Point, ByVal Point2 As Point)
    Me.Point1 = Point1
    Me.Point2 = Point2
    End Sub
    Sub New(ByVal Ctl1 As Control, ByVal Ctl2 As Control)
    Me.Ctl1 = Ctl1
    Me.Ctl2 = Ctl2
    End Sub

    Public Sub Draw(ByVal Graphics As Graphics)
    With Graphics
    If Ctl1 IsNot Nothing AndAlso Ctl2 IsNot Nothing Then
    .DrawLine(Pen, Point1, Point2)
    Else
    .DrawLine(Pen, FindCenter(Ctl1), FindCenter(Ctl2))
    End If
    End With
    End Sub
    End Class

    Namespace Specific

    Public Enum LineStyle
    Straight = 0
    Curved = 1
    End Enum

    <Serializable>
    Public Class Filling

    Public Property [Brush] As Brush = New SolidBrush(Color.White)

    Public Property [Image] As FileComponents.Specific.Image = Nothing

    Public Sub Draw(ByVal Graphics As Graphics, ByVal Rec As Rectangle)
    With Graphics
    If Image Is Nothing Then
    .FillRectangle(Brush, Rec)
    End If
    End With
    End Sub
    End Class

    <Serializable>
    Public Class Border

    End Class

    <Serializable>
    Public Class Image

    End Class
    End Namespace

    End Namespace

    clsEditorPanel.vb
    Spoiler anzeigen
    ​Public Class clsEditorPanel
    Inherits Panel

    Public Property [File] As clsFile = New clsFile

    Sub New()
    File = New clsFile
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    Me.File.Elements.Add(New FileComponents.Element)
    Me.File.Lines.Add(New FileComponents.Line(New Point(10, 10), New Point(20, 20)))
    With e.Graphics

    End With
    End Sub

    End Class


    Mir macht es nun immer, wenn ich clsEditorPanel auf eine Form ziehen will die besagte Fehlermeldung
    Auf der Suche nach Coding-Kursen auf Lence.at

    KingTimon schrieb:

    Fehlermeldung
    Viel schlimmer, alles ganz einfach.
    Public Properties wie in deinem Code werden im Designer angezeigt und dortr mit einem Defaultwert überschrieben, egal, was Du im Konstruktor machst. Das musst Du verbieten.

    VB.NET-Quellcode

    1. Imports System.ComponentModel
    2. Public Class clsEditorPanel
    3. Inherits Panel
    4. ' Das hier:
    5. <Browsable(False)> _
    6. Public Property [File] As clsFile
    7. Sub New()
    8. File = New clsFile
    9. End Sub
    10. Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    11. Me.File.Elements.Add(New FileComponents.Element)
    12. Me.File.Lines.Add(New FileComponents.Line(New Point(10, 10), New Point(20, 20)))
    13. With e.Graphics
    14. End With
    15. End Sub
    16. End Class
    Verfahre so ggf. auch bei den vielen anderen Properties in deinem Programm (Konstruktor und Browsable(False)).
    Probiere, ob das Browsable(False) allein auch reicht.
    ====
    Lösch die betreffende Zeile in der Datei frmEditor.Designer.vb.

    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!
    Vielen Dank erstmal dass du dir so viel Zeit gibst für die Problemlösung.

    Jedoch wird mir immer noch das Problem mit dem Solidbrush geworfen - Solidbrush sei nicht als serialisierbar gekennzeichnet.
    Zusammengefasst:
    weder (hier hat es mir gesagt, dass es nicht möglich ist, SolidBrush als Serialisierbar zu kennzeichnen)

    VB.NET-Quellcode

    1. <serializeable> _

    noch

    VB.NET-Quellcode

    1. <Browsable(False)> _

    hat hier etwas geholfen

    LG

    EDIT: Versuche ich, die Property mit dem Brush rauszunehmen und dann das Control auf eine form zu ziehen, wirft er mir wieder einen Fehler:

    Derzeitiger Code:
    clsFil.vb
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.ComponentModel
    2. <Serializable>
    3. Public Class clsFile
    4. Public Property [Elements] As New List(Of FileComponents.Element)
    5. Public Property [Lines] As New List(Of FileComponents.Line)
    6. Public Property [Filling] As New FileComponents.Specific.Filling
    7. Sub New()
    8. End Sub
    9. End Class
    10. Namespace FileComponents
    11. <Serializable>
    12. Public Class Element
    13. Public Property [Location] As New Point(0, 0)
    14. Public Property [Size] As New Size(100, 50)
    15. End Class
    16. <Serializable>
    17. Public Class Form
    18. Inherits Element
    19. Public Property [Filling] As New FileComponents.Specific.Filling
    20. Public Property [Border] As New FileComponents.Specific.Border
    21. End Class
    22. <Serializable>
    23. Public Class Line
    24. Public Property [Point1] As Point
    25. Public Property [Point2] As Point
    26. Public Property [Ctl1] As Control
    27. Public Property [Ctl2] As Control
    28. Public Property [Style] As FileComponents.Specific.LineStyle = FileComponents.Specific.LineStyle.Straight
    29. Public Property [Pen] As New Pen(Color.Black)
    30. Sub New()
    31. End Sub
    32. Sub New(ByVal Point1 As Point, ByVal Point2 As Point)
    33. Me.Point1 = Point1
    34. Me.Point2 = Point2
    35. End Sub
    36. Sub New(ByVal Ctl1 As Control, ByVal Ctl2 As Control)
    37. Me.Ctl1 = Ctl1
    38. Me.Ctl2 = Ctl2
    39. End Sub
    40. Public Sub Draw(ByVal Graphics As Graphics)
    41. With Graphics
    42. If Ctl1 IsNot Nothing AndAlso Ctl2 IsNot Nothing Then
    43. .DrawLine(Pen, Point1, Point2)
    44. Else
    45. .DrawLine(Pen, FindCenter(Ctl1), FindCenter(Ctl2))
    46. End If
    47. End With
    48. End Sub
    49. End Class
    50. Namespace Specific
    51. Public Enum LineStyle
    52. Straight = 0
    53. Curved = 1
    54. End Enum
    55. <Serializable>
    56. Public Class Filling
    57. 'Public Property [Brush] As Brush
    58. Public Property [Image] As FileComponents.Specific.Image = Nothing
    59. Sub New()
    60. End Sub
    61. Public Sub Draw(ByVal Graphics As Graphics, ByVal Rec As Rectangle)
    62. With Graphics
    63. If Image Is Nothing Then
    64. '.FillRectangle(Brush, Rec)
    65. End If
    66. End With
    67. End Sub
    68. End Class
    69. <Serializable>
    70. Public Class Border
    71. End Class
    72. <Serializable>
    73. Public Class Image
    74. End Class
    75. End Namespace
    76. End Namespace

    clsEditorPanel.vb
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.ComponentModel
    2. Public Class clsEditorPanel
    3. Inherits Panel
    4. <Browsable(False)>
    5. Public Property [File] As clsFile
    6. Sub New()
    7. File = New clsFile
    8. End Sub
    9. Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    10. Me.File.Elements.Add(New FileComponents.Element)
    11. Me.File.Lines.Add(New FileComponents.Line(New Point(10, 10), New Point(20, 20)))
    12. With e.Graphics
    13. End With
    14. End Sub
    15. End Class
    Auf der Suche nach Coding-Kursen auf Lence.at

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

    @KingTimon Was muss ich tun, damit dieser Fehler bei mir auftritt?
    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!
    Hey,

    hast du, in der Zeit, in der du an deinem Projekt gearbeitet hast, das Zielframework mal verändert?
    Ansonsten stimmt irgendwas nicht mit dem VS XMLSerializer (aber damit lehne ich mich wohl weit aus dem Fenster).
    Wie ist der Stand deiner Solution aktuell?

    Gruß,
    Drahuverar
    Option Strict On!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Drahuverar“ ()

    @Drahuverar Zielframework wurde nicht geändert und ist aktuell auf 4.5.2

    Ich habe leider keine Ahnung was der VS XMLSerializer ist, aber ich selbst hab auch das Gefühl, dass irgendwas an der Sache nicht stimmt... ich hatte noch nie ein Problem in die Richtung.

    Hast du eine Ahnung wie man das beheben könnte?

    LG
    Auf der Suche nach Coding-Kursen auf Lence.at
    Auf jeden Fall mal eine sehr interessante Klasse

    Also ich müsste die mir noch genauer anschauen, leider komme ich ad hoc nicht dazu.
    Eins kann ich dir aber mit Sicherheit sagen, es muss wohl ein Bug sein- da ich in VS2013 CE KEINERLEI Fehler bekomme 8o
    Hätte ich gestern schon testen können ._.'
    Option Strict On!
    @Drahuverar vielen Dank für deine Meinung.

    Ich hab leider keinen Plan was ich zunächst tun sollte. denkt ihr es ist klug eine andere Version von VS zu benutzen oder einfach die aktuelle neu installieren?

    wenn das wirklich nur ein bug ist dann sollte das doch genügen oder?


    LG
    Auf der Suche nach Coding-Kursen auf Lence.at
    Also VS2015 CE neu installieren würde glaube ich nichts bringen, da alle dieses Problem haben, da wir anscheinend alle das Problem haben. Versuchen könntest du es trotzdem mal.
    .NET 4.5.2 und 4.6 (SDK) hast du sicherlich schon auf dem Rechner?

    Ob du mit einem anderen Visual Studio arbeiten könntest weiß ich leider nicht, ich habe die 2013 aus reiner Bequemlichkeit noch auf dem Rechner ^^
    Ich behaupte mal das du auch mit 2013CE arbeiten könntest.

    Grüße
    Option Strict On!
    Klar habe ich FW 4.5.2 und 4.6

    Stimmt, ich werde mit einer älteren Version keine Solution von VS 2015 öffnen können... Ich werde mal versuchen VS neu aufzusetzen

    Vielen Dank für den Tipp!
    Auf der Suche nach Coding-Kursen auf Lence.at
    Mach das, aber du kannst mit VS2013 CE dein Projekt noch öffnen, also zumindest ich konnte das ja, das geht.
    Versuch es einfach mal, im Grunde brauchst du ja nur die Verweise überprüfen, ob die richtig übernommen worden sind, ggf. noch ein paar Settings überprüfen.
    Option Strict On!