Okaza Skrevet 23. juni 2011 Del Skrevet 23. juni 2011 (endret) Hei =) Jeg holder på å lage en "Auto Refresher" i C# som sjer slik ut: http://imageshack.us/photo/my-images/215/autorefresher.png/ Dette er på den: Start - Stop Knapp WebBrower Timer Hvordan kan jeg gjøre det når jeg trykker på Start-knappen (Button1) refresher den hvert 5. secund, og når jeg trykker på "Stop" knappen (Button2) stopper den? Hjelp? Dette er min Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace AutoRefresher { public partial class Form1 : Form { public Form1() { InitializeComponent(); } } } EDIT: Den skal brukes til å refreshe ett spill... ( Sikkert ikke noe dere trenger å vite :!: ) Endret 23. juni 2011 av Okaza Lenke til kommentar
torbjørn marø Skrevet 23. juni 2011 Del Skrevet 23. juni 2011 Har du sett på dokumentasjonen for Timer? Det bør få deg igang. Lag en OnClick handler for hver knapp (ved å dobbeltklikke på knappene), og sett timer.enabled til true og false i henholdsvis start- og stopp-knappenes handlere. Og så må du knytte opp en eventhandler til timeresn Tick-event som kjører refresh på webbrowseren. Lenke til kommentar
Okaza Skrevet 23. juni 2011 Forfatter Del Skrevet 23. juni 2011 Har du sett på dokumentasjonen for Timer? Det bør få deg igang. Lag en OnClick handler for hver knapp (ved å dobbeltklikke på knappene), og sett timer.enabled til true og false i henholdsvis start- og stopp-knappenes handlere. Og så må du knytte opp en eventhandler til timeresn Tick-event som kjører refresh på webbrowseren. Hmm... jeg får den ikke til å virke... dette er Form1.cs: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace AutoRefresher { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { timer1.Start(); } private void button2_Click(object sender, EventArgs e) { timer1.Stop(); } } } Lenke til kommentar
torbjørn marø Skrevet 24. juni 2011 Del Skrevet 24. juni 2011 Jeg ser ikke at du knytter opp noen eventhandler til Tick-eventet der. Altså, selv om du får timeren til å starte så har den ikke noe å gjøre på, for å si det sånn. Lenke til kommentar
Okaza Skrevet 24. juni 2011 Forfatter Del Skrevet 24. juni 2011 Jeg ser ikke at du knytter opp noen eventhandler til Tick-eventet der. Altså, selv om du får timeren til å starte så har den ikke noe å gjøre på, for å si det sånn. Eventhandling? Det har jeg aldri vært borti før... Lenke til kommentar
GeirGrusom Skrevet 24. juni 2011 Del Skrevet 24. juni 2011 Jeg ser ikke at du knytter opp noen eventhandler til Tick-eventet der. Altså, selv om du får timeren til å starte så har den ikke noe å gjøre på, for å si det sånn. Eventhandling? Det har jeg aldri vært borti før... Eventhandling er å binde et event mot en funksjon. Du har allerede gjort det to ganger, med hver av knappene. All koden for event-binding er skjult inne i InitializeComponent(), men kan se noe slikt ut: button1.Click += new EventHandler(button1_Click); Lenke til kommentar
Okaza Skrevet 24. juni 2011 Forfatter Del Skrevet 24. juni 2011 (endret) Jeg ser ikke at du knytter opp noen eventhandler til Tick-eventet der. Altså, selv om du får timeren til å starte så har den ikke noe å gjøre på, for å si det sånn. Eventhandling? Det har jeg aldri vært borti før... Eventhandling er å binde et event mot en funksjon. Du har allerede gjort det to ganger, med hver av knappene. All koden for event-binding er skjult inne i InitializeComponent(), men kan se noe slikt ut: button1.Click += new EventHandler(button1_Click); så koden blir slik da: private void button1_Click(object sender, EventArgs e) { timer1.Start(); button1.Click += new EventHandler(button1_Click); } Endret 24. juni 2011 av Okaza Lenke til kommentar
GeirGrusom Skrevet 24. juni 2011 Del Skrevet 24. juni 2011 Jeg ser ikke at du knytter opp noen eventhandler til Tick-eventet der. Altså, selv om du får timeren til å starte så har den ikke noe å gjøre på, for å si det sånn. Eventhandling? Det har jeg aldri vært borti før... Eventhandling er å binde et event mot en funksjon. Du har allerede gjort det to ganger, med hver av knappene. All koden for event-binding er skjult inne i InitializeComponent(), men kan se noe slikt ut: button1.Click += new EventHandler(button1_Click); så koden blir slik da: private void button1_Click(object sender, EventArgs e) { timer1.Start(); button1.Click += new EventHandler(button1_Click); } Hva? button1.Click er allerede bundet til button1_Click. Bare dobbeltklikk på timeren din i Form designeren. Lenke til kommentar
torbjørn marø Skrevet 24. juni 2011 Del Skrevet 24. juni 2011 Vil igjen minne om linken til dokumentasjonen som jeg postet tidligere. Du må LESE DEN for å se hvordan du skal bruke timeren! Alt om hvordan du knytter opp en eventhandler forklares der. Lenke til kommentar
Okaza Skrevet 25. juni 2011 Forfatter Del Skrevet 25. juni 2011 Vil igjen minne om linken til dokumentasjonen som jeg postet tidligere. Du må LESE DEN for å se hvordan du skal bruke timeren! Alt om hvordan du knytter opp en eventhandler forklares der. Jeg har nå leste gjennom den men forstår ikke hva jeg må gjøre... Lenke til kommentar
Heksesang Skrevet 26. juni 2011 Del Skrevet 26. juni 2011 (endret) Vil igjen minne om linken til dokumentasjonen som jeg postet tidligere. Du må LESE DEN for å se hvordan du skal bruke timeren! Alt om hvordan du knytter opp en eventhandler forklares der. Jeg har nå leste gjennom den men forstår ikke hva jeg må gjøre... float time = 0.0f; ... void Initialize() { timer1.Elapsed += new EventHandler(timer1_Elapsed); timer1.Start(); } ... void timer1_Elapsed(object sender, EventArgs e) { time++; Console.WriteLine("timer1 har nå sendt et event og denne funksjonen handlet det"); } Dette er kun eksempel kode, men det burde gi en ide om hvordan det funker... Denne koden vil øke time for hver gang timer1 sender et event. Du kan legge til flere funksjoner på en event property, siden event propertien (f.eks Button.Click, Timer.Elapsed) er en liste over funksjoner (event handlers) som kalles på hver gang det sendes ut et event fra objektet. Hvis du ser i Initialize() i koden min så legger jeg til en ny funksjon med += operatoren. Så Timer er egentlig en klasse som kaller en funksjon (eller flere funksjoner) med et visst interval. PS: Event handlers har alltid funksjon signaturen void handler(object sender, EventArgs e)... Funksjon signatur vil si hvilken retur type og hvilke parametere en funksjon har. Endret 26. juni 2011 av Heksesang Lenke til kommentar
Okaza Skrevet 26. juni 2011 Forfatter Del Skrevet 26. juni 2011 Vil igjen minne om linken til dokumentasjonen som jeg postet tidligere. Du må LESE DEN for å se hvordan du skal bruke timeren! Alt om hvordan du knytter opp en eventhandler forklares der. Jeg har nå leste gjennom den men forstår ikke hva jeg må gjøre... float time = 0.0f; ... void Initialize() { timer1.Elapsed += new EventHandler(timer1_Elapsed); timer1.Start(); } ... void timer1_Elapsed(object sender, EventArgs e) { time++; Console.WriteLine("timer1 har nå sendt et event og denne funksjonen handlet det"); } Dette er kun eksempel kode, men det burde gi en ide om hvordan det funker... Denne koden vil øke time for hver gang timer1 sender et event. Du kan legge til flere funksjoner på en event property, siden event propertien (f.eks Button.Click, Timer.Elapsed) er en liste over funksjoner (event handlers) som kalles på hver gang det sendes ut et event fra objektet. Hvis du ser i Initialize() i koden min så legger jeg til en ny funksjon med += operatoren. Så Timer er egentlig en klasse som kaller en funksjon (eller flere funksjoner) med et visst interval. PS: Event handlers har alltid funksjon signaturen void handler(object sender, EventArgs e)... Funksjon signatur vil si hvilken retur type og hvilke parametere en funksjon har. Dette er vanskelig å forstå for en 16år gammel gutt, som ikke har holdt på med C# så mye Lenke til kommentar
torbjørn marø Skrevet 26. juni 2011 Del Skrevet 26. juni 2011 Heksesang gav deg nesten løsningen. Hvis du bytter du innholdet i timer1_elapsed med koden som refresher WebControlen så skal du være i mål. Lenke til kommentar
Okaza Skrevet 26. juni 2011 Forfatter Del Skrevet 26. juni 2011 Heksesang gav deg nesten løsningen. Hvis du bytter du innholdet i timer1_elapsed med koden som refresher WebControlen så skal du være i mål. Ja, det refresher nå, men ikke når jeg trykker på knappen, det refresher hvert 5'te sekund... dette er koden: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace AutoRefresher { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { timer1.Start(); } void timer1_Elapsed(object sender, EventArgs e) { webBrowser1.Refresh(); } private void button2_Click(object sender, EventArgs e) { timer1.Stop(); } private void timer1_Tick(object sender, EventArgs e) { webBrowser1.Refresh(); } } } Lenke til kommentar
GeirGrusom Skrevet 27. juni 2011 Del Skrevet 27. juni 2011 Hvis den refresher hvert 5. sekund, så er det fordi timer1 sin interval er satt til 5000 ms. Lenke til kommentar
Okaza Skrevet 27. juni 2011 Forfatter Del Skrevet 27. juni 2011 Hvis den refresher hvert 5. sekund, så er det fordi timer1 sin interval er satt til 5000 ms. ja, den er det... men hvorfår refresher den ikke etter jeg har trykket på "Start" ? når jeg starter programmet begynner den å refreshe... ka du se på koden jeg postet før denne og se hva jeg har gjort galt? Lenke til kommentar
GeirGrusom Skrevet 27. juni 2011 Del Skrevet 27. juni 2011 Kanskje du har satt timer1.Enabled til true? Den skal stå på False hvis timeren ikke skal starte med engang. Å sette timer1.Enabled til true er synonymt med timer1.Start(); og likeledes å sette timer1.Enabled til false er synonymt med timer1.Stop(); Lenke til kommentar
Okaza Skrevet 27. juni 2011 Forfatter Del Skrevet 27. juni 2011 Kanskje du har satt timer1.Enabled til true? Den skal stå på False hvis timeren ikke skal starte med engang. Å sette timer1.Enabled til true er synonymt med timer1.Start(); og likeledes å sette timer1.Enabled til false er synonymt med timer1.Stop(); Ops xD, takk skal du ha :!: Og tusen takk til alle dere andre som har hjulpet meg =) 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å