Avatar billede lad Nybegynder
20. december 2007 - 20:50 Der er 5 kommentarer

kan ikke disable buttons/ændre labeltekst fra anden klasse

Hejsa. Jeg har er problem jeg synes er lidt underligt, nok fordi jeg er ny inden for C# -

I game.cs har jeg en metode ved navn 'gamestate' som køres ved et fast interval vha. en timer.
i 'gamestate' er der en metode som kalder en metode i form1.cs, som så igen skal deaktivere/aktivere nogle knapper og ændre på en label's tekst. Problemet er at jeg ingen fejl får, men der sker heller ikke noget

Hvis jeg i metoden der ændrer på labellens tekst kalder en messagebox som udskriver label1.text vises teksten jeg prøvede at ændre labellen til i messageboxen. Jeg forstår ikke et hak :-/
Avatar billede onkel_satan Nybegynder
20. december 2007 - 21:35 #1
Nu kan jeg jo ikke se koden, men der var i hvert fald lige en ting der slog mig da jeg læste ovenstående. Din game.cs køre ikke en en tråd for sig selv vel ? I saa fald saa kan game.cs ikke ændre UI/control elementer da den køre i en tråd for sig selv. Hvis dette er tilfælget skal du kigge på noget der hedder dispather.
Er det ikke tilfælde saa ved jeg ikke lige hvad det er der sker.
Avatar billede lad Nybegynder
20. december 2007 - 21:43 #2
Da jeg ikke ved hvad det er du snakker om, så vil jeg tro svaret er nej. Je ghar uploadet mit projekt her:

http://www.makeawish.dk/misc/SimonSays.rar
Avatar billede onkel_satan Nybegynder
20. december 2007 - 22:00 #3
Jeg er pt lige ved at installere visual studio 2008 og kan ikke lige huske 100% i hovedet for at få dit lille program til at virke. Men jeg kan dog se en fejl i din kode. For hvert tick opretter du et nyt game object, inde i game objekt opretter du så en ny form (det er altsaa ikke den for som du ser på skærmen) og ændre button tekst på den. Derfor ser du ingen ændring i din form.
Du skal sørge for at give dit game objekt en referance til din formen saa den kan ændre teksten. Endvidere saa tror jeg heller ikke du er interesseret i at oprette et game object hvorgang din timer ticker.
Så hvis vi ser lidt abtrakt på det saa skal du følgende.
- Din Form1 ejer/opretter ET game objekt
- game objektet skal have ren referance til Form1
- brug game.enMotode() til at opdatere Form1.

Det kan du lige tygge lidt på. Vil godt kigge lidt på det naar jeg får VS installeret (tager sgu lang tid:( )
Avatar billede lad Nybegynder
21. december 2007 - 08:23 #4
private void timer1_Tick(object sender, EventArgs e)
        {
            gamestate = game.checkState();

            label1.Text = "gamestate: " + Convert.ToInt32(gamestate);
        }

        private void button5_Click(object sender, EventArgs e)
        {
            label1.text = "test";
        }

Prøv at se engang. Dette er kode jeg har sat ind i min Form1.cs. Når jeg ændrer labellen fra timerens tick så sker der ingenting, men hvis jeg klikker på knappen neden under så virker det.
Avatar billede lad Nybegynder
16. februar 2011 - 09:31 #5
Nu er det godt nok nået tid siden det her blev skrevet, men jeg synes du skal have en chance for at få nogle points Onkel, så skriv et svar.
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