Avatar billede pablopablo Nybegynder
09. marts 2005 - 16:49 Der er 10 kommentarer og
1 løsning

Dialogbox - source

Hej

Hvordan gør jeg således, at den altid åbner en bestemt mappe, når det viser dialogboksen? Det ville være fint, hvis det bare viste "skrivebordet"...

Det er nemlig et problem, hvis programmet tidligere har indlæs t data fra en cd (i forbindelse med en helt anden funktion) og når brugeren så trykker på en anden knap for at åbne denne diaologbokse, ja så spørger den efter cd'en og først når man klikker annnuller til det, så kommer dialogboksen frem, så man kan vælge den dest. man ønkser.

Min kode ser således ud lige nu...

SaveFileDialog sfd = new SaveFileDialog();
                sfd.Filter="Microsoft Access (*.mdb)|*.mdb";
                DialogResult valg1 = sfd.ShowDialog();

Mvh. PabloPablo
Avatar billede ladyhawke Novice
09. marts 2005 - 17:16 #1
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformsfiledialogclassinitialdirectorytopic.asp

Eksempel:
openFileDialog1.InitialDirectory = "c:\\" ;

Hvis du vil have skrivebordet skal du muligvis finde nogle system variable, for det er vel ikke nødvendigvis 100% ens hver gang
Avatar billede ladyhawke Novice
09. marts 2005 - 17:17 #2
selvom eksemplet er for en open dialog så er den god nok for save også
Avatar billede pablopablo Nybegynder
09. marts 2005 - 17:36 #3
Super ;) mange tak!!
Avatar billede ladyhawke Novice
09. marts 2005 - 17:40 #4
velbekomme, husk at benytte restoredirectory (tror jeg den hedder), hvis du vil sikre dig at du ikke lave bøvl for andre ting der tilgår filsystemt, baseret på f.eks. current directory
Avatar billede pablopablo Nybegynder
21. marts 2005 - 23:37 #5
Hej igen...Jeg håber du kan hjælpe mig, pga jeg har problemer...

Efter openDialogboksen er vist og brugeren fx. vælger en fil på en usb pen...og trækker usb pennen ud af computeren bagefter, så går Visual Studio/programmet koldt...? VS. bruger meget af cpu'en og programmet stiger og stiger i ram forbrug...?

Det sker kun hvis jeg flytter usb pennen lige efter at have indlæst en fil...

Min kode ser ud som følgende...

OpenFileDialog ofd = new OpenFileDialog();

                try
                {
                    ofd.InitialDirectory = "C:\\";
                }
                catch(Exception){}

                DialogResult valg1 = ofd.ShowDialog();

//Når brugeren trykker på knappen "Open"
                if(valg1 == DialogResult.OK)
                {
...
...
...
ofd.RestoreDirectory = true;

ved du hvorfor den går helt amok...?

Mvh. PabloPablo
Avatar billede ladyhawke Novice
22. marts 2005 - 00:15 #6
Jeg går ud fra at det er fordi den leder desperat efter ressourcen som brugeren har fjernet før den er helt færdig med den, meget usportsligt i øvrigt ;o)

Du kan dels vis brugeren (vælg selv hvordan) at du nu er færdig med den operation du skal udføre og hvis du tilgår et filobjekt skal du huske at slippe det så snart du er færdig... Du kan f.eks. vise det ved at skifte markøren til "wait" indtil du har sluppet filen/ressourcen. Når du laver try catch og du vil fange alle mulige fejl, så tilføj en ekstra catch der bare er (kan ikke huske om der skal tomme parenteser på):
catch
{
  ekstra fejl håndtering her
}
Avatar billede ladyhawke Novice
22. marts 2005 - 00:16 #7
I øvrigt hvad gør du når brugeren har sagt "open" ? (bare for qat vide hvad du tilgår)
Avatar billede pablopablo Nybegynder
22. marts 2005 - 00:30 #8
øøhm...jamen, jeg er færdig med at bruge filen...men den går alligevel kold...??

Det er fx en xml fil, jeg indlæser til nogle textBoxe...jeg indlæser dem, gemmer dem trykker mig hen et andet sted i programmet og når jeg trykker mig tilbage igen, er det så at det går kold...??

Jeg indlæser en XML fil, som først bliver valideret op imod et skema, hvorefter data bliver indlæst i gui og man så kan trykke på en gem knap...

lige nu ser min kode således ud for dette :

OpenFileDialog ofd = new OpenFileDialog();

                try
                {
                    ofd.InitialDirectory = "C:\\";
                }
                catch(Exception){}

                DialogResult valg1 = ofd.ShowDialog();

                ofd.RestoreDirectory = true;
           
                //Når brugeren trykker på knappen "Open"
                if(valg1 == DialogResult.OK)
                {
                    //Lægger stien på den valgte fil + navnet på den over i variablen "XMLDokument"
                    XMLDokument = ofd.FileName;

                    //Lægger stien på XML skemaet over i variablen "XMLSkema"
                    XMLSkema = kunInstallationsSti+"\\XMLControl.xsd";

                    //Opretter en ny instans af XMLValidate
                    XMLValidate xml = new XMLValidate();

                    //Kalder metoden valider med XML dokumentet op imod skemaet
                    XMLGyldig = xml.Valider(XMLDokument,XMLSkema);
                }
       
                    //Hvis brugeren trykker på knappen "Cancel"
                else
                    ofd.Dispose();

                //Hvis XML dokumentet er gyldigt og overholder skemaets struktur.
                if(XMLGyldig)
                {
...parser/hiver data i af xml til textboxe mv...

der er andre steder i programmet, hvor jeg kan generere sammen fejl og der bliver udført helt anden funktionalitet, såsom at indlæse mdb (access database filer)...

Det er klart at det er "uretfærdigt" hvis jeg fjernede sourcen lige idet at programmet læste den, men det gør jeg ikke...først bagefter...men alligevel, virker det jo som som at det stadig leder efter sourcen/data...??
Avatar billede ladyhawke Novice
22. marts 2005 - 00:39 #9
hmmmm, lyder lidt wierd... Der må nærmere tjek til, du må debugge dig frem til problemet...

Prøv at køre programmet i debug mode og tjek hvor den "strander" henne...
Avatar billede pablopablo Nybegynder
22. marts 2005 - 00:57 #10
tjaa....har lige prøvet at sætte breakpoint i alle metoder i dll'en hvori koden ligger...men det ser ikke ud til at den køre noget af koden når den går kold...? Jeg forstår det sgu ikke rigtigt...
Avatar billede pablopablo Nybegynder
22. marts 2005 - 02:41 #11
jeg har fundet ud af hvad der er galt...grunden til at cpu og ram går helt amok, var pga. noget kode kaldte sig selv uendelig mange gange, pga. der blev kørt noget kode som blev ved med at generere den samme fejl...do!...men hvordan jeg pænest får fjernet/tjekket for fejlen ved jeg ikke....?

Fejlen lyder : "Microsoft JET Database Engine"(source) - "Programmet kan ikke startes. Arbejdsgruppeoplysningsfilen mangler eller er åbnet med udelt adgang af en anden bruger."(message)

Jeg tjekker selvfølgelig altid om databasen er åben, inden jeg benytter forbindelsen...men alligevel fejler den i linien forb.open();

...
if(databaseForbindelse!=null)
                {
                    if(databaseForbindelse!="")
                    {
                        if(SQLForespørgsel!=null)
                        {
                            if(SQLForespørgsel!="" && dt!=null)
                            {
                                //Sætter nu forbindelsen til den rigtig databse (Access-fil)
                                forb = new OleDbConnection(databaseForbindelse);
               
                                //Hvis forbindelsen til databasen er lukket åbnes den - ellers ikke.
                                ConnectionState cs = forb.State;
                                if(cs.ToString()=="Closed")
                                    forb.Open();
           
                                //Angiver nu at forespørgsel skal udfører på den ønskede database forbindelse
                                adapter.SelectCommand = new OleDbCommand(SQLForespørgsel,forb);
               
                                //Sletter evt. rækker fra dataTabellen
                                if(dt.Rows.Count!=0)
                                    dt.Clear();

                                //Lægger de fundne(matchende) rækker fra databasen ind i datatabellen.
                                fyldDataIDataTable(adapter,dt);
                            }
                        }
                    }
                }
...

dette kode bliver kaldt/fejler efter xml filen/usb pennen er fjernet fra computeren...trods koden har med database at gøre, så fejler den, med den beskrevet fejl...koden bliver kaldt i en anden forbindelse og har faktisk intet med indlæsning eller xml fil at gøre, men det fjerner alligevel når koden køres efter pennen er fjernet fra maskinen...?
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