Avatar billede elgringo Nybegynder
13. april 2005 - 09:04 Der er 13 kommentarer

BrowseFolder-dialog som i "new project"

Jeg har brug for at vise en browsefolder-dialog af den type
som der bliver anvendt når man laver et nyt projekt og skal browse sig til en lokation.
For den dialog der bliver vist med standard folderBrowseDialog'en er for simpel, jeg ville gerne have mulighed for at indtaste osv som den anden.

Kan være at den VS bruger er en OpenFileDialog der er blevet ændret, hvis det er hvordan kommer jeg så frem til samme resultat?
Avatar billede burningice Nybegynder
13. april 2005 - 12:20 #1
lav din egen form der har de features du skal bruge, og lav en static metode der returnere en værdi ud fra hvad der brugeren har valgt.

public class MinEgenBrowserFolderDIalog : Form {
    public MinEgenBrowserFolderDIalog() {
        // En masse design-gejl der får den til at se flot ud
    }

    public static string ShowDialog() {
        MinEgenBrowserFolderDIalog dialog = new MinEgenBrowserFolderDIalog();
        dialog.ShowDialog();

        string str = dialog.EnTextBox.Text;
        return str;
       
    }
}


og i dit program kan du så kalde

string projekt = MinEgenBrowserFolderDIalog.ShowDialog();
Avatar billede elgringo Nybegynder
13. april 2005 - 12:53 #2
Ja, det var en løsning. Men holder ikke hvis den skal
følge windows standard forme, hvis den form altså er en standard form.
Skulle jo gerne vises rigtigt i fremtidige os's
Avatar billede burningice Nybegynder
13. april 2005 - 13:40 #3
"New Project"-formen i VS.Net er så langt fra på ingen måde en overhovedet ikke en standard-form.
Avatar billede elgringo Nybegynder
13. april 2005 - 14:04 #4
Hvis du er så sikker på det, må de da næsten have ændret i OpenFileDialog'en.
Kan jo lade sig gøre, men hvordan gør man det i c#?
Avatar billede burningice Nybegynder
13. april 2005 - 15:16 #5
hvorfor skulle de have ændret OpenFileDialog'en? hvorfor må de ikke bare have lave sin egen form som kan de ting som Visual Studio nu engang har brug for?

Det er først når man trykker "Browse" under "New Project" at der kommer en standard windows-dialog.
Avatar billede elgringo Nybegynder
13. april 2005 - 16:01 #6
eh, snakker vi helt forbi hinanden?
Jeg snakker om "Browse" under "New Project".
Og hvis den er en standard windows-dialog, hvordan kommer jeg så frem til den?
Avatar billede burningice Nybegynder
13. april 2005 - 16:13 #7
ah.. ja, så har vi snakket lidt forbi hinanden

hvad er det du savner ved OpenFileDialog ? der både filename, filetype, knapper, og Common Folders-baren ude til venstre
Avatar billede elgringo Nybegynder
13. april 2005 - 19:40 #8
Ja, men jeg skal jo browse efter en folder? Lidt svært med en OpenFileDialog at vælge en folder :)
Avatar billede burningice Nybegynder
13. april 2005 - 20:05 #9
njaa...


    OpenFileDialog fdlg = new OpenFileDialog();
    fdlg.Title = "C# Corner Open File Dialog" ;
    fdlg.InitialDirectory = @"c:\" ;
    fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*" ;
    fdlg.FilterIndex = 2 ;
    fdlg.RestoreDirectory = true ;
    if(fdlg.ShowDialog() == DialogResult.OK)
    {
          textBox1.Text = new FileInfo(fdlg.FileName).Directory.Name ;
    }
Avatar billede elgringo Nybegynder
13. april 2005 - 20:40 #10
ehm, det er da ikke sådan en folderbrowserdialog som der er ved "Browse" under "New Project".
Er jo ikke meningen at "File name:" og "Files of type:" skal eksistere, men istedet for "Folder name:"
Avatar billede burningice Nybegynder
13. april 2005 - 21:35 #11
ja, det var straks lidt værre... ser ikke umiddelbart ud til det er noget man kan pille så meget ved.

men... men men.. :) har siddet og kigget lidt på source-koden til FileDialog og OpenFileDialog-klasserne, og det lader til at du skal have fat i denne Win32-funktion

[DllImport("comdlg32.dll", CharSet=CharSet.Auto)]
public static extern bool GetOpenFileName([In, Out] NativeMethods.OPENFILENAME_I ofn);

MSDN: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/commondialogboxlibrary/commondialogboxreference/commondialogboxfunctions/getopenfilename.asp

Ja, jeg er nu meget glad for .Net, og at man slipper for at rode med sådanne API'er
Avatar billede elgringo Nybegynder
17. april 2005 - 09:38 #12
Fandt noget andet jeg kunne bruge på http://www.codeproject.com/csharp/GetSaveFileName.asp#xx908886xx

Ellers tak :)

Men.. en ting som er lidt interessant er at du har kigget i sourcekoden til FileDialog.
Hvor har du set det, nu kommer jeg var delphi-verden hvor stort set alt er åbent mht sourcekode i standardkomponenter... men i VS syntes jeg ting er temmelig lukket.
Avatar billede burningice Nybegynder
17. april 2005 - 11:51 #13
fair nok.. ja, det er også noget rod med win32 API.. det er egentlig bare det du skulle til at lave som der allerede er en der har lavet for dig, så det er jo bare lækkert.

Ang. at læse sourcekode til .net er det ikke så svært. "Problemet" ligger i, at når du kompiler blive din kode egentlig bare lavet om til IL, som er forholdsvis nemt at læse og forstå. Det bliver altså ikke omsat til binær kode før programmet rent faktisk bliver afviklet.

Dette har en fyr ved navn Lutz Roeder (http://www.aisto.com/roeder/dotnet/) udnyttet og lavet programmet Reflector som kan disassemble en .Net dll/exe og vise koden i IL, C# og VB.Net
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester