08. november 2004 - 20:43Der er
41 kommentarer og 1 løsning
flere beskeder i en lable box?
har en knap der udføre nogle funktioner, som f.eks at hente data ud fra en database og sådan..
vil så gerne have at den løbende skriver i en lablebox hvad den har gang i.. min kode ser sådan ca sådan her ud:
lablebox.Text = "Connector"; update1(); labelbox.Text = "Henter data fra mysql"; update2(); labelbox.Text = "sender data til mysql"; update.Text = "færdig ingen fejl";
problemet er den kun altid skriver den sidste besked, og aldrig alle de andre, hvordan kan det værer?
labelbox.Text = "Connector"; update1(); labelbox.Text += "Henter data fra mysql"; update2(); labelbox.Text += "sender data til mysql"; labelbox.Text += "færdig ingen fejl";
det der sker nu er at intet står, og når dne så kommer til sidste linie står alt bare i en lang linie.. altså alt det tekst jeg har forsøgt at skrive så fra dit eksemepel vil der stå dette i lable feltet:
Connector Henter data fra mysql sender data til mysql færdig ingen fejl
besked 1, så besked 2 så besked 3, som den går igennem listen af ting der bliver udført i knappen...
fra eksempel skal den først skrive
"Connecting" når den så kommer til update 1 skal den skrive Henter datra fra Mysql når den så kommer til update2 skal den skrive sender data til mysql og så
Hvis du har en function som skriver til labelbox hver gang den gør noget, vil denne når den er færdig, og dvs ser dig resultatet vil alt functionen har skrevet ud til labelbox stå i labelbox.
Ved ikke hvad du mener med løbende?
Hvis den kun skal skrive Connector, skal du kun kalde { lablebox.Text = "Connector"; update1(); }
jeg må igen tage udgangspunk i java.. kan du ikke override? på en eller anden måde.. eller lave om på den så den tager en parameter med så du ved om den skal udskrive det eller ej..
måske en besværlig løsning hehe.. men prøver at være kreativ..
kalp - Det kan man vel godt.. Jeg er dog VB.Net koder, så tag syntaks med et gran salt.. _____________________________________ static void update1(message string) { bla; ...; updater; ...; bla; labelbox.Text = message; }
Well.. Hvis han/hun gør det så vil det stadig komme ud lige efter hinanden... Ellers skal der kaldes en function og applicationen skal pause på en eller måde før den fortsætter, og så kalde den næste..
starf - Er det som brug til fejlsøgning?.. (Så findes der noget bedre, nemlig)
ved ikke om du har fundet en løsning,...men umiddelbart kunne du jo lave en tråd, hvor du så sætter en mindre pause imellem udførelserne af de forskellige metoder. På den måde ville du (brugeren) hele tiden kunne se hvorlangt processen er i forløbet. For som starf også skriver, når du jo reelt ikke at se de andre "beskeder", som du skriver ud til din Label...
han burde jo kunne nå og se dem hvis processen tager tid... men hvis det småkode så ja så når man nok aldrig at se de andre labels.. men går den langsomt vil jeg mene hans kunne prøve at kalde dem inde i funktionerne
det er til brug, så brugeren kan se hvad funktion der udføres. ved man kan gøre det med en statusbar, vil bar ehelt gerne undgå at bruge en status bar!
hvordan indsætter man en pause?
bliver desvære nød til at smutte nu.. men kigger her igen imorgen.. på forhånd tak for hjælpen.
nej, smed bare nogle funktioner ind, du skal selvf erstartte mine update3(); med dine egne....
1) ja, for at se om den kommer dertil hvor du regner med at den gør. Det er jo ikke nemt at teste din kode når vi kun kan se 1% af den, eller deromkring....
Men bliver alt udført som sker i dine 3 funktioner????
ups, skulle da også have været System.Windows.Forms.MessageBox.Show("ved 1"); update1(); // dine egne funktioner System.Windows.Forms.MessageBox.Show("ved 2"); update2(); // dine egne funktioner System.Windows.Forms.MessageBox.Show("ved 3"); update3(); // dine egne funktioner
Så skulle du gerne kunne se fremskidt i din TextBox.....
altså nu skal det siges jeg langt fra er god til at kode c# er igang med at lære så det..
ja det er for at brugeren kan se hvad funktion der laves, meningen er at have en progressbar og så et tekst felt der ændre sig, hvor der står hvad operation der laves..
// loop - til at teste tråden. Du vil selvfølgelig udskifte // doLoop-kaldende med dine egne løkker: private void doLoop() { for(int i = 0; i < 10000; i++) { this.lblWorkStatus.Text = counter.ToString(); }
var så lidt,...håber du kunne bruge det til noget.
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.