Is het mogelijk om het standaardpad van FolderBrowserDialog in een bibliotheek te laten verschijnen in plaats van de eigenlijke schijf?

Ik weet dat als ik SelectedPath instel voordat ik het dialoogvenster laat zien, ik het kan krijgen dat een map standaard wordt geopend wanneer het dialoogvenster wordt geopend. De map die ik wil gebruiken staat echter alfabetisch veel lager in de lijst. Ik heb dezelfde map als een van mijn bibliotheken in Windows en wordt weergegeven in de lijst, is er een manier om deze standaard te gebruiken in de bibliotheekversie van de map in plaats van de harde schijfversie van de map?

Een andere mogelijke oplossing zou zijn als het nog steeds de drive-versie zou gebruiken, maar het venster automatisch naar beneden zou scrollen naar waar het was geselecteerd. Is er een manier om een ​​van deze oplossingen te doen?


Hoe het op dit moment wordt weergegeven

enter image description here

Hoe zou ik het willen laten zien

enter image description here

21
Als dit probleem over automatisch scrollen gaat, kunt u ofwel tab-tab-rightarrow typen of dit programmeren, zie stackoverflow.com/a/ 29691834/1845672
toegevoegd de auteur Roland, de bron

4 antwoord

Stel uw rootmap en het geselecteerde pad als zodanig in en het zal er automatisch naartoe scrollen in de dialoogopening:

FolderBrowserDialog dlg = new FolderBrowserDialog();
dlg.RootFolder = Environment.SpecialFolder.MyComputer;
dlg.SelectedPath = @"E:\Vetcentric";
dlg.ShowDialog();

enter image description here

Het probleem dat u tegenkomt, is dat als u de eigenschaptoewijzingen bekijkt nadat u een map in de hiërarchie van de bibliotheken hebt geselecteerd, deze nog steeds wordt toegewezen aan het genereic-pad dat u zou krijgen via mijn computer.

17
toegevoegd
Interessant, met behulp van de ontwerper om de RootFolder en de SelectedPath in te stellen, heeft het de map geselecteerd en de boom uitgebreid, maar het scrolde niet automatisch naar het venster. Het verplaatsen van die twee regels code uit de ontwerper en naar mijn constructeur heeft ervoor gezorgd dat het mijn gewenste gedrag heeft bereikt. Bedankt!
toegevoegd de auteur Scott Chamberlain, de bron
Ook nog een opmerking voor iemand anders die dit leest. Als u een pad selecteert, drukt u op OK en opent u het dialoogvenster opnieuw. De map wordt geselecteerd maar het bladert niet automatisch opnieuw.
toegevoegd de auteur Scott Chamberlain, de bron
@itsho Mijn gok is dat het geselecteerde pad verandert zodra je je eerste mapselectie maakt (uiteraard). U kunt het waarschijnlijk standaard terugzetten naar hetzelfde SelectedPath bij een gebeurtenis die aan het besturingselement is gekoppeld (zoals een knop of invoerveld waardoor het dialoogvenster in de eerste plaats wordt weergegeven), zodat het gedrag elke keer hetzelfde is.
toegevoegd de auteur KreepN, de bron
@Scott Chamberlain: zoals u zei, deze oplossing werkt alleen voor de eerste keer dat u het dialoogvenster opent. Heeft iemand een betere oplossing?
toegevoegd de auteur itsho, de bron
Het werkt niet voor mij
toegevoegd de auteur monstr, de bron

Gebruik een Reset() -aanroep. Hierdoor gaat het automatisch scrollen.

        string prevpath = folderBrowserDialog1.SelectedPath;
        folderBrowserDialog1.Reset();
        folderBrowserDialog1.SelectedPath = bc.myWorkingDir;
        folderBrowserDialog1.ShowNewFolderButton = true;

        DialogResult dr = folderBrowserDialog1.ShowDialog();
        if (dr == DialogResult.OK || dr == DialogResult.Yes)
        {
            bc.myWorkingDir = folderBrowserDialog1.SelectedPath;
        }
        folderBrowserDialog1.SelectedPath = prevpath;
6
toegevoegd
Werkte niet voor mij. Met de aanroep Resetten() worden de instellingen in Designer gewist.
toegevoegd de auteur Roland, de bron
Het werkt voor mij, Thx
toegevoegd de auteur monstr, de bron

Stel gewoon het pad in Bibliotheken \ VetCentric ... voordat je opent zou het moeten doen denk ik.

0
toegevoegd

De gemakkelijkste manier is waarschijnlijk om snelkoppelingen naar de gewenste mappen in uw startmap te plaatsen. Dubbelklik vervolgens gewoon op de snelkoppeling en u gaat naar uw map.

Otherwise you will need to use the Shell Library API See: Using Libraries in your Program

0
toegevoegd