none
Forms Fehler

    Frage

  • Hallo zusammen,

    bin eigentlich kein Entwickler aber trotzdem interessiert. Ich hoffe ihr zerfleischt mich nicht gleich.
    Vielleicht hat ja jemand gerade Langeweile und will sich meinem Problem annehmen.

    In meiner Firma gibt es ein Programm bei dem der Sourcecode verloren gegangen ist und ich wieder zum Leben erwecken will.
    Nun habe ich den Code mit einem Decompiler (dnSpy) in ein VS 2015 Projekt exportiert. Das hat relativ gut funktioniert bis auf viele Fehler in der Forms.
    Hier kommt immer wieder die Meldung Der System.Windows.Forms.Form-Typ besitzt keine Eigenschaft mit dem Namen...

    Komme da nicht weiter. Auch mit den Google Ergebnissen konnte ich das nicht lösen. :-(

    Hier ein Teil aus dem Code:

    Me.btnOK = New Global.System.Windows.Forms.Button()

    Definition von btnOK:

    Friend Overridable Property btnOK As Button
                <DebuggerNonUserCode()>
                Get
                    Return Me._btnOK
                End Get
                <DebuggerNonUserCode()>
                <MethodImpl(MethodImplOptions.Synchronized)>
                Set(value As Button)
                    Dim value2 As EventHandler = AddressOf Me.btnOK_Click
                    Dim flag As Boolean = Me._btnOK IsNot Nothing
                    If flag Then
                        RemoveHandler Me._btnOK.Click, value2
                    End If
                    Me._btnOK = value
                    flag = (Me._btnOK IsNot Nothing)
                    If flag Then
                        AddHandler Me._btnOK.Click, value2
                    End If
                End Set
            End Property

    Danke & Gruß
    Christian

    Dienstag, 6. November 2018 09:30

Alle Antworten

  • Hallo,

    bitte zeige den kompletten Fehler an und die (erste) Source-Code-Zeile, wo er auftritt, bzw. sofern der Fehler in deinem btnOk Code vorkommt, wo genau?

    Inwiefern hat dein btnOk-Code mit der Fehlermeldung zu tun?

    Gruß Guido

    Dienstag, 6. November 2018 09:45
  • Hallo Guido,

    danke für deine Antwort.

    Die komplette Fehlermeldung lautet:

    Der System.Windows.Forms.Form-Typ besitzt keine Eigenschaft mit dem Namen btnOK.

    Und man springt in folgende Zeile:

    Me.btnOK = New Global.System.Windows.Forms.Button()

    Oben habe ich noch die Definition von btnOK eingefügt.

    Danke & Gruß
    Christian


    Dienstag, 6. November 2018 10:03
  • Hallo Christian,

    ich denke mal, da fehlen die Angaben in der <FormName>.designer.vb, dort finden sich in der Regel die Controls, die man über den Designer auf die Form gezogen hat sowie deren Eigenschaften, die über die Property Controls geändert wurden.

    Letztendlich wird dir wahrscheinlich nicht viel anderes übrig bleiben als alle Controls und deren Grundeigenschaften manuell per Code einzubauen oder die Controls dann über den Designer wieder in die Form einzubauen und mit denselben Namen zu versehen. Die Eigenschaften wie Location, ... sind dann allerdings wohl verloren.

    Ich würde aber vorher evtl. mal mit Telerik JustDecompile, RedGate .NET Reflector, ... probieren, ob Du damit bessere Ergebnisse beim Wiederherstellen des Quellcodes erreichst.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Dienstag, 6. November 2018 12:00
    Moderator
  • Hallo Stefan,

    danke dir für die Antwort. Habe mir schon gedacht das es nicht so einfach wird.
    Mit deinen zwei Decompilern komme ich auch nicht weiter.

    Habe aber jetzt trotzdem mal den Inhalt von der *.designer.vb hier rein kopiert.

    Namespace HEAT_Message
        ' Token: 0x02000009 RID: 9
        <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
        Public Partial Class frmMain
            Inherits Global.System.Windows.Forms.Form

            ' Token: 0x06000033 RID: 51 RVA: 0x00002E64 File Offset: 0x00001064
            <Global.System.Diagnostics.DebuggerNonUserCode()>
            Protected Overrides Sub Dispose(disposing As Boolean)
                Dim flag As Boolean = disposing AndAlso Me.components IsNot Nothing
                If flag Then
                    Me.components.Dispose()
                End If
                MyBase.Dispose(disposing)
            End Sub

            ' Token: 0x06000034 RID: 52 RVA: 0x00002E9C File Offset: 0x0000109C
            <Global.System.Diagnostics.DebuggerStepThrough()>
            Private Sub InitializeComponent()
                Me.components = New Global.System.ComponentModel.Container()
                Dim componentResourceManager As Global.System.ComponentModel.ComponentResourceManager = New Global.System.ComponentModel.ComponentResourceManager(GetType(HEAT_Message.frmMain))
                Me.btnOK = New Global.System.Windows.Forms.Button()
                Me.lblMeldung = New Global.System.Windows.Forms.Label()
                Me.tmrSound = New Global.System.Windows.Forms.Timer(Me.components)
                Me.ntfHEAT_Message = New Global.System.Windows.Forms.NotifyIcon(Me.components)
                Me.cmsSystray = New Global.System.Windows.Forms.ContextMenuStrip(Me.components)
                Me.mniBeenden = New Global.System.Windows.Forms.ToolStripMenuItem()
                Me.mniLastCall = New Global.System.Windows.Forms.ToolStripMenuItem()
                Me.ToolStripSeparator1 = New Global.System.Windows.Forms.ToolStripSeparator()
                Me.mniMaximieren = New Global.System.Windows.Forms.ToolStripMenuItem()
                Me.mniSuchen = New Global.System.Windows.Forms.ToolStripMenuItem()
                Me.imgList = New Global.System.Windows.Forms.ImageList(Me.components)
                Me.tmrCheckDB = New Global.System.Windows.Forms.Timer(Me.components)
                Me.txtMeldung = New Global.System.Windows.Forms.TextBox()
                Me.btnSuchen = New Global.System.Windows.Forms.Button()
                Me.llbHeatCall = New Global.System.Windows.Forms.LinkLabel()
                Me.pbrNextSearch = New Global.System.Windows.Forms.ProgressBar()
                Me.tmrNextSearch = New Global.System.Windows.Forms.Timer(Me.components)
                Me.lblLastCall = New Global.System.Windows.Forms.Label()
                Me.tipfrmMain = New Global.System.Windows.Forms.ToolTip(Me.components)
                Me.cbx_Prioritaet = New Global.System.Windows.Forms.ComboBox()
                Me.cmsSystray.SuspendLayout()
                Me.SuspendLayout()
                Me.btnOK.FlatAppearance.BorderColor = Global.System.Drawing.Color.White
                Me.btnOK.FlatStyle = Global.System.Windows.Forms.FlatStyle.System
                Me.btnOK.Font = New Global.System.Drawing.Font("Microsoft Sans Serif", 36F, Global.System.Drawing.FontStyle.Bold, Global.System.Drawing.GraphicsUnit.Point, 0)
                Dim btnOK As Global.System.Windows.Forms.Control = Me.btnOK
                Dim location As Global.System.Drawing.Point = New Global.System.Drawing.Point(78, 55)
                btnOK.Location = location
                Me.btnOK.Name = "btnOK"
                Dim btnOK2 As Global.System.Windows.Forms.Control = Me.btnOK
                Dim size As Global.System.Drawing.Size = New Global.System.Drawing.Size(268, 63)
                btnOK2.Size = size
                Me.btnOK.TabIndex = 0
                Me.btnOK.Text = "OK"
                Me.tipfrmMain.SetToolTip(Me.btnOK, "Meldung gesehen. Meldung " & vbCrLf & "               NICHT " & vbCrLf & "       im Browser öffnen." & vbCrLf & vbCrLf & "Programm in Systray ablegen.")
                Me.btnOK.UseVisualStyleBackColor = True
                Me.lblMeldung.AutoSize = True
                Me.lblMeldung.Font = New Global.System.Drawing.Font("Microsoft Sans Serif", 26.25F, Global.System.Drawing.FontStyle.Bold, Global.System.Drawing.GraphicsUnit.Point, 0)
                Me.lblMeldung.ForeColor = Global.System.Drawing.Color.Brown
                Dim lblMeldung As Global.System.Windows.Forms.Control = Me.lblMeldung
                location = New Global.System.Drawing.Point(9, 9)
                lblMeldung.Location = location
                Me.lblMeldung.Name = "lblMeldung"
                Dim lblMeldung2 As Global.System.Windows.Forms.Control = Me.lblMeldung
                size = New Global.System.Drawing.Size(413, 39)
                lblMeldung2.Size = size
                Me.lblMeldung.TabIndex = 1
                Me.lblMeldung.Text = "NEUE JIRA MELDUNG"
                Me.tmrSound.Interval = 250
                Me.ntfHEAT_Message.ContextMenuStrip = Me.cmsSystray
                Me.ntfHEAT_Message.Text = "HEAT_Message"
                Me.ntfHEAT_Message.Visible = True
                Me.cmsSystray.Items.AddRange(New Global.System.Windows.Forms.ToolStripItem() { Me.mniBeenden, Me.mniLastCall, Me.ToolStripSeparator1, Me.mniMaximieren, Me.mniSuchen })
                Me.cmsSystray.Name = "ContextMenuStrip1"
                Dim cmsSystray As Global.System.Windows.Forms.Control = Me.cmsSystray
                size = New Global.System.Drawing.Size(157, 98)
                cmsSystray.Size = size
                Me.cmsSystray.Text = "Beenden"
                Me.mniBeenden.Name = "mniBeenden"
                Dim mniBeenden As Global.System.Windows.Forms.ToolStripItem = Me.mniBeenden
                size = New Global.System.Drawing.Size(156, 22)
                mniBeenden.Size = size
                Me.mniBeenden.Text = "Beenden"
                Me.mniBeenden.ToolTipText = "Programm beenden."
                Me.mniLastCall.Name = "mniLastCall"
                Dim mniLastCall As Global.System.Windows.Forms.ToolStripItem = Me.mniLastCall
                size = New Global.System.Drawing.Size(156, 22)
                mniLastCall.Size = size
                Me.mniLastCall.Text = "Letzte Meldung"
                Me.mniLastCall.ToolTipText = "Letzte Meldung im Browser öffnen"
                Me.ToolStripSeparator1.Name = "ToolStripSeparator1"
                Dim toolStripSeparator As Global.System.Windows.Forms.ToolStripItem = Me.ToolStripSeparator1
                size = New Global.System.Drawing.Size(153, 6)
                toolStripSeparator.Size = size
                Me.mniMaximieren.Name = "mniMaximieren"
                Dim mniMaximieren As Global.System.Windows.Forms.ToolStripItem = Me.mniMaximieren
                size = New Global.System.Drawing.Size(156, 22)
                mniMaximieren.Size = size
                Me.mniMaximieren.Text = "Maximieren"
                Me.mniMaximieren.ToolTipText = "Programm anzeigen."
                Me.mniSuchen.Name = "mniSuchen"
                Dim mniSuchen As Global.System.Windows.Forms.ToolStripItem = Me.mniSuchen
                size = New Global.System.Drawing.Size(156, 22)
                mniSuchen.Size = size
                Me.mniSuchen.Text = "Suchen"
                Me.mniSuchen.ToolTipText = "Nach neuer Meldung suchen."
                Me.imgList.ImageStream = CType(componentResourceManager.GetObject("imgList.ImageStream"), Global.System.Windows.Forms.ImageListStreamer)
                Me.imgList.TransparentColor = Global.System.Drawing.Color.Transparent
                Me.imgList.Images.SetKeyName(0, "micom-4.ico")
                Me.imgList.Images.SetKeyName(1, "micom-3.ico")
                Me.imgList.Images.SetKeyName(2, "micom.ico")
                Me.tmrCheckDB.Interval = 10000
                Dim txtMeldung As Global.System.Windows.Forms.Control = Me.txtMeldung
                location = New Global.System.Drawing.Point(12, 124)
                txtMeldung.Location = location
                Me.txtMeldung.Multiline = True
                Me.txtMeldung.Name = "txtMeldung"
                Me.txtMeldung.ScrollBars = Global.System.Windows.Forms.ScrollBars.Vertical
                Dim txtMeldung2 As Global.System.Windows.Forms.Control = Me.txtMeldung
                size = New Global.System.Drawing.Size(408, 141)
                txtMeldung2.Size = size
                Me.txtMeldung.TabIndex = 2
                Me.tipfrmMain.SetToolTip(Me.txtMeldung, "Status der DB Prüfungen seit dem letzten Start" & vbCrLf & "Doppelklick auf Callnummer öffnet Meldung im Browser")
                Dim btnSuchen As Global.System.Windows.Forms.Control = Me.btnSuchen
                location = New Global.System.Drawing.Point(356, 95)
                btnSuchen.Location = location
                Me.btnSuchen.Name = "btnSuchen"
                Dim btnSuchen2 As Global.System.Windows.Forms.Control = Me.btnSuchen
                size = New Global.System.Drawing.Size(64, 23)
                btnSuchen2.Size = size
                Me.btnSuchen.TabIndex = 3
                Me.btnSuchen.Text = "Suchen"
                Me.tipfrmMain.SetToolTip(Me.btnSuchen, "Nach neuem Call suchen.")
                Me.btnSuchen.UseVisualStyleBackColor = True
                Me.llbHeatCall.AutoSize = True
                Dim llbHeatCall As Global.System.Windows.Forms.Control = Me.llbHeatCall
                location = New Global.System.Drawing.Point(12, 100)
                llbHeatCall.Location = location
                Me.llbHeatCall.Name = "llbHeatCall"
                Dim llbHeatCall2 As Global.System.Windows.Forms.Control = Me.llbHeatCall
                size = New Global.System.Drawing.Size(59, 13)
                llbHeatCall2.Size = size
                Me.llbHeatCall.TabIndex = 4
                Me.llbHeatCall.TabStop = True
                Me.llbHeatCall.Text = "LinkLabel1"
                Me.tipfrmMain.SetToolTip(Me.llbHeatCall, "Letzte gefundene Meldung im Browser öffnen")
                Dim pbrNextSearch As Global.System.Windows.Forms.Control = Me.pbrNextSearch
                location = New Global.System.Drawing.Point(12, 271)
                pbrNextSearch.Location = location
                Me.pbrNextSearch.Name = "pbrNextSearch"
                Dim pbrNextSearch2 As Global.System.Windows.Forms.Control = Me.pbrNextSearch
                size = New Global.System.Drawing.Size(410, 13)
                pbrNextSearch2.Size = size
                Me.pbrNextSearch.TabIndex = 5
                Me.tipfrmMain.SetToolTip(Me.pbrNextSearch, "Zeit bis zu nächsten automatischen Suche.")
                Me.lblLastCall.Font = New Global.System.Drawing.Font("Microsoft Sans Serif", 8.25F, Global.System.Drawing.FontStyle.Bold, Global.System.Drawing.GraphicsUnit.Point, 0)
                Dim lblLastCall As Global.System.Windows.Forms.Control = Me.lblLastCall
                location = New Global.System.Drawing.Point(12, 71)
                lblLastCall.Location = location
                Me.lblLastCall.Name = "lblLastCall"
                Dim lblLastCall2 As Global.System.Windows.Forms.Control = Me.lblLastCall
                size = New Global.System.Drawing.Size(60, 34)
                lblLastCall2.Size = size
                Me.lblLastCall.TabIndex = 7
                Me.lblLastCall.Text = "Letzte Meldung"
                Me.tipfrmMain.SetToolTip(Me.lblLastCall, "Letzte gefundene Meldung.")
                Me.cbx_Prioritaet.BackColor = Global.System.Drawing.Color.Red
                Me.cbx_Prioritaet.FormattingEnabled = True
                Me.cbx_Prioritaet.Items.AddRange(New Object() { "0", "1", "2", "3", "4", "5" })
                Dim cbx_Prioritaet As Global.System.Windows.Forms.Control = Me.cbx_Prioritaet
                location = New Global.System.Drawing.Point(356, 69)
                cbx_Prioritaet.Location = location
                Me.cbx_Prioritaet.Name = "cbx_Prioritaet"
                Dim cbx_Prioritaet2 As Global.System.Windows.Forms.Control = Me.cbx_Prioritaet
                size = New Global.System.Drawing.Size(64, 21)
                cbx_Prioritaet2.Size = size
                Me.cbx_Prioritaet.TabIndex = 8
                Me.tipfrmMain.SetToolTip(Me.cbx_Prioritaet, "Aktuelle Priorität auf die reagiert wird.")
                Me.cbx_Prioritaet.Visible = False
                Dim autoScaleDimensions As Global.System.Drawing.SizeF = New Global.System.Drawing.SizeF(6F, 13F)
                Me.AutoScaleDimensions = autoScaleDimensions
                Me.AutoScaleMode = Global.System.Windows.Forms.AutoScaleMode.Font
                size = New Global.System.Drawing.Size(427, 292)
                Me.ClientSize = size
                Me.Controls.Add(Me.cbx_Prioritaet)
                Me.Controls.Add(Me.llbHeatCall)
                Me.Controls.Add(Me.lblLastCall)
                Me.Controls.Add(Me.pbrNextSearch)
                Me.Controls.Add(Me.btnSuchen)
                Me.Controls.Add(Me.txtMeldung)
                Me.Controls.Add(Me.lblMeldung)
                Me.Controls.Add(Me.btnOK)
                Me.FormBorderStyle = Global.System.Windows.Forms.FormBorderStyle.FixedSingle
                Me.Icon = CType(componentResourceManager.GetObject("$this.Icon"), Global.System.Drawing.Icon)
                Me.MaximizeBox = False
                Me.Name = "frmMain"
                Me.StartPosition = Global.System.Windows.Forms.FormStartPosition.CenterScreen
                Me.Text = "ACHTUNG - NEUE JIRA MELDUNG"
                Me.cmsSystray.ResumeLayout(False)
                Me.ResumeLayout(False)
                Me.PerformLayout()
            End Sub

            ' Token: 0x04000014 RID: 20
            Private components As Global.System.ComponentModel.IContainer
            Private vbCrLf As String
        End Class
    End Namespace

    Danke & Gruß
    Christian

    Dienstag, 6. November 2018 12:55
  • Hallo Christian,

    der Decompiler generiert den Code wohl nicht vollständig.

    Bspw. wird:

    Me.btnOK = New Global.System.Windows.Forms.Button()

    zwar generiert, "btnOK" wird aber nirgends deklariert. Da fehlt dann bspw. noch:

    Friend WithEvents btnOK As System.Windows.Forms.Button

    auf Klassenebene in der ...designer.vb

    Dasselbe natürlich für alle anderen Controls auch.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport


    Dienstag, 6. November 2018 14:14
    Moderator
  • Hallo Stefan,

    Super Danke Dir!!! :-)
    Werde morgen mal probieren zu erstellen.
    Melde mich.

    Gruß
    Christian
    Dienstag, 6. November 2018 14:46
  • Hallo Stefan,

    das war zwar nicht die Lösung aber ich habe es gefunden.
    Und zwar musste ich den Code von
    Me.btnOK = New Global.System.Windows.Forms.Button()
    auf
    Me._btnOK = New Global.System.Windows.Forms.Button()
    ändern. Und das natürlich auch für die anderen.
    Nun geht die Form auf. Aber ohne die WithEvents. Die habe ich zum Großteil über die Eigenschaft angelegt.

    Sozusagen ist das Problem damit behoben. Vielen Dank hierfür.

    Aktuell ist die Funktion zum Großteil wieder hergestellt. Bis auf das minimieren ins System Tray und die Progressbar die noch nicht funktioniert.
    Mittwoch, 7. November 2018 10:46
  • Hi,

    prima, dass es nun klappt.

    Aber ehrlich gesagt finde ich die Lösung über die Eigenschaft (so wie es in der Regel vom Designer auch umgesetzt wird) doch erheblich einfacher. Der von dir im ersten Posting angegebene Code für die Property btnOK steht ja anscheinend nicht in der generierten ...designer.vb, deren Inhalt hattest Du ja vollständig gepostet, oder?

    Aber sei's drum: Wichtig ist, dass es klappt.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Mittwoch, 7. November 2018 10:58
    Moderator
  • Hallo Stefan,

    habe den Code aus der Datei *.designer.vb. Dort steht nur das drin was ich gepostet habe.
    Die Property vom ersten Post steht übergeordnet in *.vb. Ist das vielleicht das Problem?

    Gruß
    Christian
    Mittwoch, 7. November 2018 11:44