Return Problem

  • VB.NET

Es gibt 44 Antworten in diesem Thema. Der letzte Beitrag () ist von Unwesen.

    Return Problem

    Hallo,

    ich habe ein relativ umfassendes Problem, ich versuchs mal deutlich zu erklären.

    Ich habe ein Programm geschrieben (sitz schon mehrere Tage drann) wo man eine Datei auswähen kann und eine txt in einer ListBox läd, wenn man auf Rename klickt renamt er die Datei mit dem ListBoxbox inhalt -> geht die ganze Liste durch und renamt jede einzelne Zeile.

    Screen zur Verdeutlichng:



    So, die Funktion "Select a new file in x renamed files" hat die Funktion das wenn man zb 5 in die TextBox (TextBox2) eingibt dann öffnet sich ein neuer file dialog und man kann eine neue file wählen.

    Die Funktion darunter is so ähnlich bloß directory = ordner

    Wenn man 1ne CheckBox checked dann kann man auc heinen neuen extra namen wählen (der kommt am ende der Datei hinzu) -> zb. test wählt man aus, man wählt [cracked] -> test [cracked]

    Nun das Problem wenn ich alle beide gecheckt habe nimmt er nur den 1. und den directory lässt er aus, ich weiß auch warum, siehe code:


    VB.NET-Quellcode

    1. If select1 = True And directory = True Then
    2. On Error GoTo Marke3
    3. If zähler = TextBox2.Text And CheckBox4.Checked = True Then
    4. zähler = 0
    5. dlg.ShowDialog()
    6. TextBox1.Text = dlg.FileName
    7. ComboBoxEx1.Enabled = True
    8. Button3.Enabled = True
    9. Button12.Enabled = False
    10. a = i
    11. x = True
    12. Return
    13. End If
    14. If zähler2 = TextBox3.Text And CheckBox1.Checked = True Then
    15. zähler2 = 0
    16. open1.ShowDialog()
    17. ComboBoxEx1.Enabled = True
    18. Button3.Enabled = True
    19. Button14.Enabled = False
    20. a = i
    21. x = True
    22. Return
    23. End If
    24. If zähler = TextBox2.Text And CheckBox4.Checked = False Then
    25. zähler = 0
    26. dlg.ShowDialog()
    27. TextBox1.Text = dlg.FileName
    28. End If
    29. If zähler2 = TextBox3.Text And CheckBox1.Checked = False Then
    30. zähler2 = 0
    31. open1.ShowDialog()
    32. End If


    Ich muss ja mit Return abbrechen, somit wird der zähler (wird erhöht wenn die Progressbar erhöht wird) auf 0 gesetzt und die 2. If abfrage hat garkeine Chance aufzutreten.

    Wie löse ich das am besten?


    Meine 2. Frage ist /noch nicht gelöst :

    wenn man auf Rename klickt öffnet sich ja ein FolderBrowser dialog, es ist aber schon doof wenn man einen neuen extra name wählt, das er sich wieder öffnet wenn man die 1/2 checkboxen checked hat, wie kann ich das Lösen?

    Habe zu keinem ne richtige idee =/

    Edit by ~blaze~:
    *Rot ist den Moderatoren vorbehalten*

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „~blaze~“ ()

    1. rot dürfen nur die Mods!!!

    2. zum Problem:
    mach ne Boolean Variable, die du sobald der FolderBrowserDialog einmal kam auf False setzt,
    immer vor dem Dialog, kuksch du ob die Boolean True oder False ist, und lässt dann den Dialog anzeigen, oder auch nicht.
    Nach einem vollen Durchlauf, musst dus dann natürlich wieder auf True setzten

    Gruß Einsteiger
    Ja mit dem Boolean hab ich schon,

    das Problem ist nur:

    VB.NET-Quellcode

    1. Dim open1 As FolderBrowserDialog = New FolderBrowserDialog()
    2. Dim result As DialogResult


    Wenn ich jetzt zb schreib:

    VB.NET-Quellcode

    1. If x = False Then
    2. result = open1.ShowDialog()
    3. Else
    4. '....weiß nicht


    VB.NET-Quellcode

    1. If result <> Windows.Forms.DialogResult.OK Then
    2. Exit Sub
    3. End If


    Also, wenn jetzt zb abgebrochen wurde und man einen neuen namen selektieren will, dann soll er nicht nochmal den folder browser öffnen sondern an der stelle weiteramchen wo er aufgehört hat und es trotzdem in den gleichen ordner der zu erst angegeben wurde reinkopiern und as weiß ich nich wie ich das machen soll
    für den Ordner machst du wieder ne Variabel (damit haschs net so oder? xD)
    speichersch den angegebenen beim ersten Mal dadrin.

    Und machsch dann die IfAbfrage, tusch danach aber nicht mit open1.Folder (oder wie des heißt)
    weitermachen, sondern mit der Variablen,

    Gruß Einsteiger
    Hm, ja ^^

    Ok habs jetzt so, das kalppt aber nich wie ichs mir vorstellte :( :

    Ganz oben 1. Zeile im gesamten code unter Public CLass Form:

    VB.NET-Quellcode

    1. Dim c As String = Windows.Forms.DialogResult.OK


    Danach im Rename Button:


    VB.NET-Quellcode

    1. Dim open1 As FolderBrowserDialog = New FolderBrowserDialog()
    2. Dim result As DialogResult
    3. Dim i As Integer
    4. If x = False Then
    5. result = open1.ShowDialog
    6. If result <> c Then
    7. Exit Sub
    8. End If
    9. Else
    10. c = result
    11. a = i
    12. End If



    Wenn ein neuer Ordner ausgewählt wird:

    VB.NET-Quellcode

    1. If TextBox2.Text = TextBox3.Text And zähler = TextBox2.Text And zähler = TextBox3.Text And CheckBox4.Checked = True Then
    2. zähler = 0
    3. dlg.ShowDialog()
    4. result = open1.ShowDialog
    5. TextBox1.Text = dlg.FileName
    6. ComboBoxEx1.Enabled = True
    7. Button3.Enabled = True
    8. a = i
    9. x = True
    10. Return
    11. End If


    Hm =/
    den filename? dlg = IST DER FILEDIALOG
    und open1 ist halt der folderbrowserdialog - ordnerdialog

    ich will aber den ORDNER ändern, nich die file, der filename ist in der textbox1


    VB.NET-Quellcode

    1. Dim dlg As OpenFileDialog = New OpenFileDialog
    Ok, also:

    es is doch unlogisch wenn ich die Funktion, "Select new directory" auswähle und die checkbox checke, danach wenn die gewünschte zahl erreicht ist, kann ich ja einen neuen ordner auswählen, danach einen neuen namen selektieren, und wenn ich dann wieder auf rename klicke öffnet er ja nochmal den folder brwoser, und das is das prob.
    ah, jetzt hab ichs geblickt!!!!!!!!!!!!!!!!!!!!!!!!!

    aber es hat doch gestimmt, was ich vorher ságte, du musst den Ordner, in den die gerenameten Dateien hinkommen, speichern, also quasi das was du bei dem FolderBrowserDialog bestimmtst, das musst du in einer Variable speichern, z.B. in einer File-Variablen (wobei ich nicht sichern bin, ob das geht und was das beste wäre

    Dim c As File

    Dann geht das mit dem aufrufen oder nicht doch

    gruß Einsteiger
    Um den Pfadnamen zu speichern brauchst du keine unsichtbare Textbox. Wozu gibts denn alle möglichen Variablen. Deklariere zum Beispiel Dim Pfadname as String ausserhalb einer Sub und weise der dann (in der entsprechenden Sub, wo du den Pfadnamen aus dem FolderBrowserDialog holst) den Pfad zu. Auf den Inhalt dieser Variablen kannst du dann in jeder Sub zugreifen.