09. marts 2005 - 16:49Der 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.
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
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...
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 }
øø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...
//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...??
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...
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...?
Synes godt om
Ny brugerNybegynder
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.