Öffnen-Problem mit codeEditor...

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Warfley.

    Öffnen-Problem mit codeEditor...

    Hi,

    Wenn ich eine z.B. .vb datei öffne, wird diese nicht in meinem Editor angezeigt...

    VB.NET-Quellcode

    1. Sub Oeffnen()
    2. With OpenFileDialog1
    3. .Filter = "DOS-Batch (*.bat)|*.bat|VisualBasicScript (*.vbs)|*.vbs|HTMLEditor (*.html)|*.html|VB-Editor (*.vb)|*.vb|Textdocument (*.txt)|*.txt|AlleDateien (*.*)|*.*"
    4. .FilterIndex = 2
    5. .FileName = ""
    6. Dim dlgresult As DialogResult = .ShowDialog
    7. If dlgresult = Windows.Forms.DialogResult.Cancel Then
    8. Exit Sub
    9. End If
    10. If OpenFileDialog1.FilterIndex = ".bat" Then
    11. PictureBox5.Visible = True
    12. ElseIf OpenFileDialog1.FilterIndex = ".vbs" Then
    13. PictureBox1.Visible = True
    14. ElseIf OpenFileDialog1.FilterIndex = ".html" Then
    15. PictureBox2.Visible = True
    16. ElseIf OpenFileDialog1.FilterIndex = ".vb" Then
    17. PictureBox4.Visible = True
    18. ElseIf OpenFileDialog1.FilterIndex = ".txt" Then
    19. PictureBox3.Visible = True
    20. End If
    21. Try
    22. Me.CodeEditorControl1.Text = My.Computer.FileSystem.ReadAllText(OpenFileDialog1.FileName)
    23. Catch ex As Exception
    24. MessageBox.Show(ex.Message, "Es ist ein Fehler aufgetreten", MessageBoxButtons.OK, MessageBoxIcon.Error)
    25. End Try
    26. End With
    27. End Sub


    Wo liegt der Fehler?

    mfg

    gfc

    gfcwfzkm schrieb:

    Wo liegt der Fehler?
    Du hast nicht mit Option Strict On programmiert. :thumbdown:
    So wird ein Schuh draus:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. With OpenFileDialog1
    2. .Filter = "DOS-Batch (*.bat)|*.bat|VisualBasicScript (*.vbs)|*.vbs|HTMLEditor (*.html)|*.html|VB-Editor (*.vb)|*.vb|Textdocument (*.txt)|*.txt|AlleDateien (*.*)|*.*"
    3. .FilterIndex = 2
    4. .FileName = ""
    5. Dim dlgresult As DialogResult = .ShowDialog
    6. If dlgresult = Windows.Forms.DialogResult.Cancel Then
    7. Exit Sub
    8. End If
    9. If OpenFileDialog1.FilterIndex = 0 Then '".bat"
    10. PictureBox5.Visible = True
    11. ElseIf OpenFileDialog1.FilterIndex = 1 Then '".vbs"
    12. PictureBox1.Visible = True
    13. ElseIf OpenFileDialog1.FilterIndex = 2 Then '".html"
    14. PictureBox2.Visible = True
    15. ElseIf OpenFileDialog1.FilterIndex = 3 Then '".vb"
    16. PictureBox4.Visible = True
    17. ElseIf OpenFileDialog1.FilterIndex = 4 Then '".txt"
    18. PictureBox3.Visible = True
    19. End If
    20. Try
    21. Me.CodeEditorControl1.Text = My.Computer.FileSystem.ReadAllText(OpenFileDialog1.FileName)
    22. Catch ex As Exception
    23. MessageBox.Show(ex.Message, "Es ist ein Fehler aufgetreten", MessageBoxButtons.OK, MessageBoxIcon.Error)
    24. End Try
    25. End With
    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!
    sry, aber openstrict on hat mir das problem nicht gelöst...

    Ich kann alles öffnen, aber nix wird in meinem CodeEditorControl angezeigt...
    Soweit ich mich erinnern kann, muss es

    VB.NET-Quellcode

    1. Me.CodeEditorControl1.Document.Text

    heißen....oder so ähnlich.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    funzt, thx :D

    jedoch sollte es auch die ausgewählte Dateiendung erkennen und so das CodeEditorControl danach anpassen...
    Wie mach ich des? hab's mit ... ausprobiert:

    VB.NET-Quellcode

    1. If .FilterIndex = 0 Then
    2. PictureBox5.Visible = True
    3. CodeEditorSyntaxLoader.SetSyntax(CodeEditorControl1, SyntaxLanguage.DOSBatch)
    4. ElseIf .FilterIndex = 1 Then
    5. PictureBox1.Visible = True
    6. CodeEditorSyntaxLoader.SetSyntax(CodeEditorControl1, SyntaxLanguage.VBScript)
    7. ElseIf .FilterIndex = 2 Then
    8. PictureBox2.Visible = True
    9. CodeEditorSyntaxLoader.SetSyntax(CodeEditorControl1, SyntaxLanguage.HTML)
    10. ElseIf .FilterIndex = 3 Then
    11. PictureBox4.Visible = True
    12. CodeEditorSyntaxLoader.SetSyntax(CodeEditorControl1, SyntaxLanguage.VBNET)
    13. ElseIf .FilterIndex = 4 Then
    14. PictureBox3.Visible = True
    15. CodeEditorSyntaxLoader.SetSyntax(CodeEditorControl1, SyntaxLanguage.Text)
    16. End If


    *hust* komm damit net klar...

    mfg
    Ich würde eher nen public String machen, indem du bei jedem Öffnen den Dateinamen lädst... Und dann prüfst du dort halt, wie er endet. Ist mMn einfacher^^
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    hmm...
    Etwas Unkompaktibel...
    Wie geht der code schonwieder, um etwas nach einem bestimten wort/buchstabe zu suchen?
    dann könnte ich doch die .FileName nach z.B. ".bat" abfragen lassen, oder?

    mfg

    VB.NET-Quellcode

    1. If string.EndsWith(".bat") Then
    2. MessageBox.Show("Ich bin so glücklich, dass ich eine Bat-Datei bin!")
    3. '...


    Bitte beachte, dass hier nur das Ende geprüft wird. Contain empfiehlt sich aber ohnehin nicht, anonsten würde er bat.xyz als Bat-Datei anerkennen ;)
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    thx, habs auch geknackt...

    If .Filename.EndsWith(".vbs") then
    Label1.Text = "MEP"


    :D

    thx dir, ist erledigt ;)
    Naja, ich persönlich bevorzuge an so einer Stelle eher einen Public String. Kannst gemütlich auch von anderen Formen drauf zugreifen und verwenden^^

    Mit Enums kenn ich mich aber zu wenig aus, um darüber etwas sagen zu können.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Enums sind "Datentypen" die nur statisch vordefinierte werte haben können.

    Ein sehr bekanntes enum im .Net ist das Keys Enum:

    so kannst du eine Variable als Key definieren (Dim Var As Key) und dann einem wert aus dem enum zuweisen: (Var=Keys.F11)
    Ein Enum kann entweder nur aus "Namensvariablen" bestehen oder man kann ihnen auch werte zuweisen.

    VB.NET-Quellcode

    1. Enum VarTyp As Integer
    2. Zahl1=1
    3. Zahl2=2
    4. End Enum
    5. ...
    6. Dim Var As VarTyp = VarTyp.Zahl1
    7. Dim Var2 As VarTyp=VarTyp.Zahl2
    8. Dim Var3 As Integer= Var+Var2
    somit wäre var3=3 da 1(Zahl1) + 2(Zahl2) =3 sind.

    der Vorteil ist dass solche Enums Nominalisierte Staatische werte haben.

    So könnte man ausser einem Public string das so Machen

    VB.NET-Quellcode

    1. Public Enum FileType
    2. VBS
    3. Batch
    4. HTML
    5. VB
    6. TXT
    7. Other
    8. End Enum
    9. Public ft As FileType
    10. Sub Main()
    11. If ... Then
    12. ft = FileType.Batch
    13. ElseIf ... Then
    14. ft = FileType.VBS
    15. ...
    16. Else
    17. ft = FileType.Other
    18. End Sub

    und von jedem anderen Objekt kann dann über If Modul1.ft=FileType.Batch Then Do Anything abgerufen werden