Form wird nicht geladen Problem

  • VB.NET

    Form wird nicht geladen Problem

    Hei :)
    Ich versuche ein texteditor zu schreiben und habe dazu 2 Formen

    Eine zum Text schreiben und die 2. form ist zum speichern gedacht


    VB.NET-Quellcode

    1. Imports System.IOPublic Class Formi
    2. Dim Dim1 As String = TextBox1.Text Dim Dim2 As String = FolderBrowserDialog1.SelectedPath
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click FolderBrowserDialog1.ShowDialog() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If Dim1.Contains("" & " ") Then TextBox1.BackColor = Color.Crimson MsgBox("Name darf nicht leer sein!!!", MsgBoxStyle.Exclamation) TextBox1.Text = " " Else If ComboBox1.Text = ".txt" Then RichTextBox1.SaveFile(Dim2 & "\" & Dim1 & ".rtf", RichTextBoxStreamType.RichText) Else RichTextBox1.SaveFile(Dim2 & Dim1 & ".txt", RichTextBoxStreamType.PlainText) End If End If
    4. If Dim1.Contains("\") Then TextBox1.BackColor = Color.Crimson MsgBox("Name darf kein '\' enthalten!!!", MsgBoxStyle.Exclamation) TextBox1.Clear() Else If ComboBox1.Text = ".txt" Then RichTextBox1.SaveFile(Dim2 & Dim1 & ".rtf", RichTextBoxStreamType.RichText) Else RichTextBox1.SaveFile(Dim2 & Dim1 & ".txt", RichTextBoxStreamType.PlainText) End If End If End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged If Dim1.Contains("\" Or " ") Then TextBox1.BackColor = Color.Crimson Else TextBox1.BackColor = Color.White End If End SubEnd Class


    wenn ich debugge und in der ersten form auf "Speichern" gehe...

    VB.NET-Quellcode

    1. Private Sub SpeichernToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SpeichernToolStripMenuItem.Click Frm1 = RichTextBox1.Text Form2.Show() Form2.RichTextBox1.Text = Frm1 End Sub



    erscheint ein ziemlich langer fehlercode und die form wird nicht geladen...
    Spoiler anzeigen


    System.InvalidOperationException wurde nicht behandelt.
    Message=Fehler beim Erstellen des Formulars. Weitere Informationen finden Sie in Exception.InnerException. Fehler: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt..
    Source=TextEdit
    StackTrace:
    bei TextEdit.My.MyProject.MyForms.Create__Instance__[T](T Instance) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 190.
    bei TextEdit.My.MyProject.MyForms.get_Form2()
    bei TextEdit.My.MyApplication.OnCreateMainForm() in C:\Users\einnamehalt\Documents\Visual Studio 2010\Projects\TextEdit\TextEdit\My Project\Application.Designer.vb:Zeile 35.
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    bei TextEdit.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 81.
    bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
    bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
    bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
    bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    bei System.Threading.ThreadHelper.ThreadStart()
    InnerException: System.NullReferenceException
    Message=Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
    Source=TextEdit
    StackTrace:
    bei TextEdit.Form2..ctor() in C:\Users\einnamehalt\Documents\Visual Studio 2010\Projects\TextEdit\TextEdit\Form2.vb:Zeile 4.
    InnerException:


    :?: :?: :?: :?: :?:
    :?: :( :( :( :?:
    :?: :?: :?: :?: :?:


    Bittteee Hilffeeee ://
    Dankee - einnamehalt
    Interesse wird geladen...: 00%

    ACHTUNG! FEHLER! Interesse wurde nicht deklariert

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

    hallo einnamehalt!

    magst du vlt. deinen Post leserlicher machen?
    VB-Tag richtig benutzen

    Und wieso brauchst du zum Abspeichern ein Extra-Form?
    Programmier-Tipps:   allgemeine Tipps                                   Tipps zu DB-Programmierung
    Helferlein:                  Online Code-Übersetzer (c# <=> vb)   Decompiler ILSpy
    Das ist der Fehler:

    VB.NET-Quellcode

    1. Dim Dim1 As String = TextBox1.Text
    2. Dim Dim2 As String = FolderBrowserDialog1.SelectedPath

    Mach es so:

    VB.NET-Quellcode

    1. Private Dim1 As String
    2. Private Dim2 As String
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. Dim1 = TextBox1.Text
    5. Dim2 = FolderBrowserDialog1.SelectedPath
    6. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    VB-Fragen über PN werden ignoriert!
    und ich sag noch, warum:
    Weil als KlassenVariabel wird Dim1 bereits initialisiert, bevor die Textbox initialisiert ist, und zu diesem verfrühten Zeitpunkt ist deren Text natürlich "".
    Daher ins Form_Load, weil das wird nach Initialisierung aller Controls gefeuert.
    Programmier-Tipps:   allgemeine Tipps                                   Tipps zu DB-Programmierung
    Helferlein:                  Online Code-Übersetzer (c# <=> vb)   Decompiler ILSpy
    Heiii Danke Für die ganzen schnellen antworten :)


    ich werd gleich mal alles probieren und meld mich dann wieder



    Von ErfinderDesRades
    Und wieso brauchst du zum Abspeichern ein Extra-Form?
    ich brauchs nich :D ich wills einfach :D



    EDIT:

    RodFromGermany schrieb:

    Das ist der Fehler:

    VB.NET-Quellcode

    1. Dim Dim1 As String = TextBox1.Text
    2. Dim Dim2 As String = FolderBrowserDialog1.SelectedPath

    Mach es so:

    VB.NET-Quellcode

    1. Private Dim1 As String
    2. Private Dim2 As String
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. Dim1 = TextBox1.Text
    5. Dim2 = FolderBrowserDialog1.SelectedPath
    6. End Sub
    Sry des geht nich: Gleicher fehler wie obeen :/

    ErfinderDesRades schrieb:

    und ich sag noch, warum:
    Weil als KlassenVariabel wird Dim1 bereits initialisiert, bevor die Textbox initialisiert ist, und zu diesem verfrühten Zeitpunkt ist deren Text natürlich "".
    Daher ins Form_Load, weil das wird nach Initialisierung aller Controls gefeuert.
    Sry Blick ich nich :D




    Ich bin noch sehr neu in VB und noch neuer in diesem Forum... bitte entschuldigt wenn ich mich hier noch nich ganz auskenne :(



    Danke - einnamehalt
    Interesse wird geladen...: 00%

    ACHTUNG! FEHLER! Interesse wurde nicht deklariert

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „einnamehalt“ ()

    einnamehalt schrieb:

    Sry Blick ich nich

    Dann sollteste dich bemühen, weil das ist der Fehler (zumindest einer).

    Bemühen heißt mindestens, eine Frage stellen, die man auch beantworten kann. "Blicks nicht" - was soll man dazu antworten?
    Beantworten könnte man, wenn du angibst, ob dir der eine oder andere Begriff unbekannt ist, und welcher.

    poste auch mal deinen derzeitigen Code.
    Programmier-Tipps:   allgemeine Tipps                                   Tipps zu DB-Programmierung
    Helferlein:                  Online Code-Übersetzer (c# <=> vb)   Decompiler ILSpy
    Sry Sry habs nur nich ganz verstanden du hast des so unverstädlich ausgedrückt

    der code is der gleiche weil des was die anderen vorgeschlagen haben leider nichts gebracht hat

    Danke - einnamehalt

    Edit by hal2000:
    - Vollzitat entfernt.
    Interesse wird geladen...: 00%

    ACHTUNG! FEHLER! Interesse wurde nicht deklariert

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

    einnamehalt schrieb:

    Sry Sry habs nur nich ganz verstanden du hast des so unverstädlich ausgedrückt
    was habe ich unverständlich ausgedrückt? Was ist daran unverständlich (oder hast dus inzwischen verstanden)?

    der code is der gleiche weil des was die anderen vorgeschlagen haben leider nichts gebracht hat
    Wie gesagt: Rods Vorschlag scheint mir unbedingt zielführend, den sollteste einbauen, und dann den Code posten - vlt. hasten ja falsch eingebaut.
    Und ühaupt kann ich den ursprünglichen Code nicht lesen, aber das postete ich ja schon in post#2, wie du das verbessern könntest.
    Programmier-Tipps:   allgemeine Tipps                                   Tipps zu DB-Programmierung
    Helferlein:                  Online Code-Übersetzer (c# <=> vb)   Decompiler ILSpy

    ErfinderDesRades schrieb:

    und ich sag noch, warum:
    Weil als KlassenVariabel wird Dim1 bereits initialisiert, bevor die Textbox initialisiert ist, und zu diesem verfrühten Zeitpunkt ist deren Text natürlich "".
    Daher ins Form_Load, weil das wird nach Initialisierung aller Controls gefeuert.
    Unterstrichen : was meinst du damit?
    Kursiv : sorry versteh ich vom deutsch her nich

    Sorry - einnamehalt
    Interesse wird geladen...: 00%

    ACHTUNG! FEHLER! Interesse wurde nicht deklariert

    einnamehalt schrieb:

    ErfinderDesRades schrieb:

    und ich sag noch, warum:
    damit beziehe ich mich auf Rods richtigen Vorschlag, und füge diesem Vorschlag eine Erklärung hinzu

    Weil als KlassenVariabel wird Dim1 bereits initialisiert
    hier sind 2 Begriffe enthalten: klassenvariable und initialisieren: welchen verstehst du nicht?

    bevor die Textbox initialisiert
    ... ah - initialisieren
    man muß eine Variable zunächst deklarieren, zB.

    VB.NET-Quellcode

    1. dim Dim1
    Damit kann man aber noch nix tun, weil ist ja noch nur eine leere Stelle (Nothing). Erst durch Zuweisung eines Wertes kann man mit der Variablen was anfangen - das meint initialisieren.
    Dein Fehler besteht darin, dass du Textbox1.Text bereits abrufst, bevor an die Textbox1-Variable (es ist ja eine Variable) etwas zugewiesen ist. Daher auch die InnerException, die sagt: "Objekt wird verwendet, bevor etwas zugewiesen ist"


    ist, und zu diesem verfrühten Zeitpunkt ist deren Text natürlich "".
    Das war Fehler von mir. Zu dem Zeitpunkt, wo du auf Textbox1.Text zugreifst, existiert Textbox1 garnet, und daher ist ihre .Text-Property nichtmal "", sondern du kriegst gleich die Fehlermeldung

    Daher ins Form_Load, weil das wird nach Initialisierung aller Controls gefeuert.
    Das Form_Load ist ein Ereignis, in dem du Code plazieren kannst (wie Rod zeigt). Die Ereignismethode wird dir generiert, wenn du im Form-Designer einen Doppelklick auf die TitelLeiste deines Forms klickst. Diese Ereignis-Methode wird aufgerufen, nachdem die Controls des Forms initialisiert sind.


    Sorry
    Wofür entschuldigst du dich ? Hast du was angestellt? Erscheint dir mein Ton pampig? Das bedeutet nichts - meine schlechten Umgangsformen sind genetisch bedingt ;)

    übrigens, deinen Code kann ich immer noch nicht lesen - post#2
    Programmier-Tipps:   allgemeine Tipps                                   Tipps zu DB-Programmierung
    Helferlein:                  Online Code-Übersetzer (c# <=> vb)   Decompiler ILSpy

    einnamehalt schrieb:

    Sry des geht nich: Gleicher fehler wie obeen

    Hast Du meinen Code genommen und in ein neues Testprojekt eingefügt?
    Tu dies und teste, was passiert.
    Hast Du ggf. noch weitere solche Un-Deklarationen in Deinem Projekt?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    VB-Fragen über PN werden ignoriert!

    ErfinderDesRades schrieb:

    einnamehalt schrieb:

    Wofür entschuldigst du dich ? Hast du was angestellt? Erscheint dir mein Ton pampig? Das bedeutet nichts - meine schlechten Umgangsformen sind genetisch bedingt ;)
    ja dein Ton erschien pampig :D

    @RodFromGermany:
    also ich habs rein kopiert und der fehler blieb der selbe

    Edit by hal2000:
    - Vollzitat entfernt.
    Interesse wird geladen...: 00%

    ACHTUNG! FEHLER! Interesse wurde nicht deklariert

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

    konnteste mit meine Erläuterungen was anfangen?

    Ich kann dein Code immer noch nicht lesen.
    Ich würds ja geschwind nachbauen, mit deim aktuellen Code, aber den gibts ja nicht.
    Programmier-Tipps:   allgemeine Tipps                                   Tipps zu DB-Programmierung
    Helferlein:                  Online Code-Übersetzer (c# <=> vb)   Decompiler ILSpy