Folderbrowserdialog zu Selected Path scrollen

  • VB.NET

Es gibt 29 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Folderbrowserdialog zu Selected Path scrollen

    Hi,
    Ich habe einen Folderbrowserdialog, dem ich als Standardpfad F:Ordner\Ordner\Ordner übergebe.
    Das klappt soweit auch, und der Ordner ist auch ausgewählt, nur um das zu sehen muss man erst nach unten scrollen. Man sieht also in dem Fenster Desktop, C, D, E, F, und Teile der F Unterordner.
    Ab dem ersten Unterordner von F: ist dann auch das Fenster zu Ende. Sprich man muss zu dem eigentlich ausgewähltem Pfad erst scrollen. Für mich kein Problem, da ich weiß, was ausgewählt ist. Doch wenn ich das Programm einer Person gebe, die das Programm nicht kennt ist es erstmal verwirrend.

    Wie kann ich also nun zum Pfad wechseln, der als Standart übergeben wird?

    Mein Code:

    VB.NET-Quellcode

    1. 'Öffnet ein Fenster zum Auswählen des Ausgabeordners
    2. Dim FolderBrowser As New FolderBrowserDialog
    3. FolderBrowser.Description = "Wähle den Speicherort aus."
    4. FolderBrowser.ShowNewFolderButton = True
    5. FolderBrowser.RootFolder = System.Environment.SpecialFolder.Desktop
    6. FolderBrowser.SelectedPath = IO.Path.GetDirectoryName(mylist.Peek) 'Wählt standartmäßig als Ausgabeordner den Inputordner, der vorher gewählten Datei
    7. If FolderBrowser.ShowDialog = Windows.Forms.DialogResult.OK Then
    8. Ausgabepfad = FolderBrowser.SelectedPath
    9. Else
    10. Exit Sub
    11. End If


    Danke
    Grüße ;)
    Wüsste jetzt net wie das gehen sollte. Aber da der Description nach ein Verzeichnis zum Speichern ausgewählt werden soll, würde sich da ein SaveFileDialog anbieten. Da bekommst du auch direkt auf der rechten Seite das Ordnerfenster.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim Pfad As String = "Z:\#Music\Crystal Castles\Crystal Castles - Thrash Thrash Thrash (2008)"
    2. Dim Dateiname As String
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. Using sfd As New SaveFileDialog
    5. With sfd
    6. .Title = "Wähle den Speicherort aus."
    7. .InitialDirectory = Pfad 'Das Verzeichnis in dem gespeichert werden soll
    8. .Filter = "Alle Dateien|*.*" 'Alle Datzeien anzeigen
    9. .FileName = "MeineDatei.txt" 'Standardeintrag für Speichername
    10. End With
    11. If sfd.ShowDialog = Windows.Forms.DialogResult.OK Then
    12. Dateiname = sfd.FileName 'Pfad und gewählter Dateiname
    13. End If
    14. End Using
    15. End Sub

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

    Naja, von den Eigenschaften des FolderBrowserDialog her sehe ich da jetzt keine Möglichkeit zu dem Verzeichnis zu scrollen. Du kannst ja auch net unbedingt davon ausgehen, dass der Speicherort auf einem Fremdcomputer ausser Sicht ist, ansonsten würde ich einem Anwender aber durchaus zutrauen zu verstehen, was er tun muss, um ihn in den sichtbaren Bereich zu bekommen.^^

    Wie auch immer, mit sfd hat der Anwender zumindest schonmal den Ordner im Blick. Könntest das ja so drehen, dass statt dem Dateinamen eben ein Projektname eingegebn wird, woraufhin dein Programm eben an diesem Ort einen entsprechenden Unterordner erstellt. *Wirft andere Probleme auf..

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

    @ ThuCommix
    RootFolder erwartet aber ein System.Environment.SpecialFolder. Mit einer Pfadangabe wie "E:\Test\Test" geht da nix.
    "Option Strict On" lässt keine impliziten Konvertierungen von String in System.Environment.SpecialFolder zu"


    //Edit
    Ach, selbst schon gemerkt?^^
    mit API wäre möglich...

    msdn.microsoft.com/en-us/library/bb759988%28v=VS.85%29.aspx
    msdn.microsoft.com/en-us/library/ff486023%28v=vs.85%29.aspx



    Ich würde dir raten einfach dir eigenes FolderBrowserDialog basteln...nimm ein Form, plaziere TreeView, in Treeview kannst deine Ordner aufliesten und auch AutoScroll Funktion zu dem gewünschten Ordner schreiben.

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

    NicoHood schrieb:

    Ich habe einen Folderbrowserdialog, dem ich als Standardpfad F:Ordner\Ordner\Ordner übergebe.
    Das klappt soweit auch, und der Ordner ist auch ausgewählt, nur um das zu sehen muss man erst nach unten scrollen.

    Ich kann den Fehler nicht nachvollziehen

    VB.NET-Quellcode

    1. With FolderBrowserDialog1
    2. .Description = "Wähle den Speicherort aus."
    3. .ShowNewFolderButton = True
    4. '.RootFolder = Environment.SpecialFolder.MyDocuments
    5. .SelectedPath = Environment.CurrentDirectory ' New DirectoryInfo("..\").FullName
    6. .ShowDialog()
    7. End With

    Das CurrentDirectory ist angewählt und sichtbar.

    .RootFolder hat soweitichseh nur die Auswirkung, wennich zB MyDocuments angebe, dass dann nix angewählt ist, weil Environment.CurrentDirectory beimir nicht in Documents liegt.

    Kannst du eine Solution uppen, die das Verhalten reproduziert (bitte nur eine kleine ;))
    So, ich war etwas länger weg...

    Ich lade jetzt mal ein Beispiel hoch. Ich hab mein Programm in dem MB gekürzt, da ich alles von Virtual Dub entfernt habe. Nur der Programmcode ist aber noch vollgeschrieben. Wenn du es dir anschaust (wäre nice), dann fang einfach oben an zu lesen, da ist alles was du brauchst. Nach den Folderbrowserdialog steht exit sub mit einer Nachricht. Ich habe eine Trennlinie hinzugefügt. Ich hoffe du findest dich zurrecht.
    Zum starten klicke auf den Button links oben, wähle eine Avi Datei aus (am besten in einem verschachteltem ordner) und dann siehste ja was rauskommt.

    Eine Extra Form möchte ich dafür nicht erstellen, ich möchte es mit den einfachen Dingen im Programm lösen. Falls das nicht geht, nehme ich das auch so hin. Trotzdem gebe ich die Hoffnung nicht auf ;)

    Beispielprogramm:
    ablage4me.go-schulz.de/AndereThemen/Testprogramm.zip

    Grüße
    kann man garnit starten, gibt auch keine fehlerzeile - nur meldung:

    Eine Ausnahme (erste Chance) des Typs "System.PlatformNotSupportedException" ist in Microsoft.WindowsAPICodePack.dll aufgetreten.

    jetz habich alles mittm apipack rausgeworfen - wie gesagt: kann den fehler nicht nachvollziehen
    Bilder
    • Shots26.Png

      35,18 kB, 600×468, 496 mal angesehen

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

    Sry, ich konnte eben von deinem Beitrag nur die 2. Zeile lesen O.o

    Also funktionert es jetzt? du müsstest jedoch noch einen tieferen pfad auswählen um den effekt zu sehen.

    Das Api dingens ist nur für windows 7, eigentlich sollte es gehen, ich weis nicht warum... hast du .net 4?
    da müsste ich mal nachforschen, jedoch für mich nichtso wichtig, ich nehm zuzeit win 7. Die dll enthällt so Progressbars für die Taskleiste, was nur in win 7 geht.
    Bei mir wird er ja selectiert, aber er scrollt nicht nach unten. scrollt er denn bei dir? Denn würde es an win 7 liegen. Wenns bei dir geht, solls mir egal sein. Dann ist es kein Programmierfehler.
    Bilder
    • beispiel.png

      17,26 kB, 334×366, 376 mal angesehen
    hmmm das heist ich darf die dll nur importieren, wenn das system unterstützt wird? Ich frage mich warum das wieder schief läuft. wenn ich was importiere ist es halt drinne, obs genutzt wird oder nicht.

    Die 50 (28) Fehler sind bestimmt die oder:
    If Taskbar.TaskbarManager.IsPlatformSupported Then 'Wenn Windows 7 kompatibel
    manager.SetProgressState(Taskbar.TaskbarProgressBarState.Paused)
    manager.SetProgressValue(1, 1)
    End If

    Das ist die Abfrage auf kompatibilität. Wie kann ich das Problem denn jetzt lösen? Dann muss ich alles umprogrammieren auf Vista/Winxp? Na toll...
    hab glaub die böse zeile gefunden:

    VB.NET-Quellcode

    1. Dim manager As Taskbar.TaskbarManager = Taskbar.TaskbarManager.Instance


    du solltest dieses dings also nur erstellen, wenn

    Objectbrowser schrieb:

    Public Shared ReadOnly Property IsPlatformSupported As Boolean
    Member von Microsoft.WindowsAPICodePack.Taskbar.TaskbarManager

    nun weist du aber nicht was shared ist... hmm.dieses Buch Lesen - S. 221