FenrisC0de Skrevet 15. mai 2006 Del Skrevet 15. mai 2006 Vel, jeg holder på med et lite program her, og siden jeg er helt nybegynner på VB.NET støter jeg på små problemer\utfordringer hele tiden. FOr eksempel har jeg lagt inn en progressbar, men har ikke peiling på hvordan jeg får denne til å fungere? Jeg har en knapp som når trykkes utfører et arbeid, og jeg vil gjerne indikere dette ved hjelp av progressbaren, men jeg vet ikke hvordan jeg skal "integrere" den i arbeidet. Noen som kan hjelpe? Lenke til kommentar
aadnk Skrevet 16. mai 2006 Del Skrevet 16. mai 2006 (endret) Det er i hovedsak kun èn ting som er nødvendig - å finne ut hva en bør telle progresjonen i operasjonen ufra. Eksempelvis kan du anvende antall slettede filer dersom programmet sletter en viss mengde filer. Når dette nummeret er kalkulert, setter du simpelthen ProgressBar1.Maximum til denne verdien. Deretter er det rett og slett å øke Value-egenskapen med 1 for, i dette eksempelet, sletter. Det kan nok òg være en fordel å kalle Application.DoEvents() ofte (f.eks. hver gang du oppdaterer progresjonskontrollen) dersom operasjoen er nokså tidkrevende og du ikke ønsker at hovedformen skal være utilgjengelig under prosessen. Jeg har vedlagt en liten eksempelkode: Dim Tell As Int32 ' Antall operasjoner: 100 + 1 = 101 ProgressBar1.Maximum = 101 ' Utfør en operasjon 101 ganger For Tell = 0 To 100 ' Øk den nåværende progresjonen ProgressBar1.Increment(1) ' La andre meldinger til applikasjonen eksekveres Application.DoEvents() ' Vent 100 millisekunder (simlulerer en operasjon, så som å slette en fil) System.Threading.Thread.Sleep(100) Next Før øvrig ... hvorfor ikke ta en titt i en programmeringsbok for .NET? Det er nok mye raskere og bedre enn å legge ut en alskens tråder her på forumet. Endret 16. mai 2006 av aadnk Lenke til kommentar
FenrisC0de Skrevet 16. mai 2006 Forfatter Del Skrevet 16. mai 2006 Tusen tusen takk for all din hjelp! Du ser ut til å være forumets VB.NET spesialist Skal skaffe meg en .net bok ja, har bare ikke funnet det. hehe Lenke til kommentar
Manfred Skrevet 16. mai 2006 Del Skrevet 16. mai 2006 Det er i hovedsak kun èn ting som er nødvendig - å finne ut hva en bør telle progresjonen i operasjonen ufra. Eksempelvis kan du anvende antall slettede filer dersom programmet sletter en viss mengde filer. Når dette nummeret er kalkulert, setter du simpelthen ProgressBar1.Maximum til denne verdien. Deretter er det rett og slett å øke Value-egenskapen med 1 for, i dette eksempelet, sletter. Det kan nok òg være en fordel å kalle Application.DoEvents() ofte (f.eks. hver gang du oppdaterer progresjonskontrollen) dersom operasjoen er nokså tidkrevende og du ikke ønsker at hovedformen skal være utilgjengelig under prosessen. Jeg har vedlagt en liten eksempelkode: Dim Tell As Int32 ' Antall operasjoner: 100 + 1 = 101 ProgressBar1.Maximum = 100 ' Utfør en operasjon 101 ganger For Tell = 0 To 100 ' Vis hvilken nåværende progresjon vi har ProgressBar1.Value = ProgressBar1.Value + 1 ' La andre meldinger til applikasjonen eksekveres Application.DoEvents() ' Vent 100 millisekunder (simlulerer en operasjon, så som å slette en fil) System.Threading.Thread.Sleep(100) Next Før øvrig ... hvorfor ikke ta en titt i en programmeringsbok for .NET? Det er nok mye raskere og bedre enn å legge ut en alskens tråder her på forumet. 6112234[/snapback] Ikke for å pirke, men det er vel strengt tatt finere programmeringsmessig å bruke increment()-metoden til prograssBar i stedet for å sette Value hele tiden... Lenke til kommentar
Moskus Skrevet 16. mai 2006 Del Skrevet 16. mai 2006 ... dessuten hvis man vil bruke .Value, så er dette hakket enklere: ProgressBar1.Value += 1 Aadnk har stålkontroll på VB, men jeg visste ikke han hadde begynt med .NET. Lenke til kommentar
Manfred Skrevet 16. mai 2006 Del Skrevet 16. mai 2006 (endret) Jeg mener fortsatt at increment() er finere. Det er en grunn til at funksjonene er der. Bruk .net slik det er ment at man skal... (Selv om han har stålkontroll på VB trenger han ikke ha stålkontroll på .net-rammeverket. Jeg har jobbet med dette i flere år) Endret 16. mai 2006 av Manfred Lenke til kommentar
Moskus Skrevet 16. mai 2006 Del Skrevet 16. mai 2006 Jada, du er fremdeles ekstremt flink i .NET, men Aadnks løsning fungerer den også. Men, som alltid, det er kjekt å vite hvordan noe kan gjøres enklere. Lenke til kommentar
Manfred Skrevet 16. mai 2006 Del Skrevet 16. mai 2006 Det er det jeg forsøker å få frem også, at det ofte er en forskjell på hva som fungerer og hva som er korrekt Jeg mener bare at man bør bruke rammeverket slik det er laget... Lenke til kommentar
aadnk Skrevet 16. mai 2006 Del Skrevet 16. mai 2006 Japp, det er for så vidt nokså nylig at jeg startet med .NET-rammeverket. Jeg har såklart forsøkt å sette meg inn i relevant litteratur knyttet til emnet - den innførte operatøren += er ikke ukjent for meg - men jeg burde nok studert de ulike prosedyrene i denne kontrollen mer inngående;Increment() gikk meg beklageligvis hus forbi. Jeg skal få oppdatert kodeeksempelet. Lenke til kommentar
FenrisC0de Skrevet 16. mai 2006 Forfatter Del Skrevet 16. mai 2006 (endret) Takk for masse hjelp.. Prøvde først med den opprinnelige koden med Value, og det fungerte fint untatt: An unhandled exception of type 'System.ArgumentException' occurred in system.windows.forms.dll Additional information: '101' is not a valid value for 'value'. 'value' should be between 'minimum' and 'maximum'. Sikkert enkel måte å fikse dette på? Endret 16. mai 2006 av Earth657 Lenke til kommentar
aadnk Skrevet 16. mai 2006 Del Skrevet 16. mai 2006 Ah, du må selvsagt sette Maximum til 101. I tillegg må du sette verdien du ønsker å øke progresjonskontrollen i det første paramenteret: ProgressBar1.Increment(1). Lenke til kommentar
FenrisC0de Skrevet 16. mai 2006 Forfatter Del Skrevet 16. mai 2006 (endret) ah ok.. fikk det til å funke sånn halveis nå med increment. Eneste problemet er at den ikke tilbakestiller seg etter at operasjonen er fullført... den står på max og hvis jeg prøver å gjennta operasjonen (trykke på knappen en gang til) skjer ingenting.. EDIT: i tillegg beveger ikke progress-baren seg i takt med operasjonen.. det å fullføre kommandoene tar bare 2-3 sekunder, mens progressbaren kjører jevnt i ca 10sekunder.. Endret 16. mai 2006 av Earth657 Lenke til kommentar
aadnk Skrevet 16. mai 2006 Del Skrevet 16. mai 2006 Vel, da må du tilbakestille posisjonen ved å sette Value-egenskapen til 0. Nei, du skal ikke lime inn koden direkte. Poenget er at du må selv finne ut hvor stor Max-verdien skal være. Dette kan du blant annet beregne ved å telle antall filer du skal gjøre en operasjon med. Sleep-prosedyren kan du godt fjerne i din kode - det var kun for å illustrere progresjonen (ellers ville progresjonsbaren blitt full med en gang etter eksekvering). Lenke til kommentar
FenrisC0de Skrevet 16. mai 2006 Forfatter Del Skrevet 16. mai 2006 Ah oki. Har nå fått det til å fungere, men jeg bruker increment, og den stiller seg ikke tilbake til 0 etter gjennomført operasjon.. Er det noen mulighet for å bare raskt si hvordan så skal jeg takke for meg å gå å kjøpe vb.NET bok Lenke til kommentar
aadnk Skrevet 16. mai 2006 Del Skrevet 16. mai 2006 Vil jo tro følgende burde fungere greit: ProgressBar1.Value = 0 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå