Avatar billede maxmuldjord Nybegynder
04. oktober 2004 - 11:40 Der er 18 kommentarer og
1 løsning

Klasser der kan kaldes fra en knap?

Ok, nu bliver det da rigtigt spændende, jeg er kommet lidt videre med mine yatzyterninger og skal til at forsøge mig med et scoreboard, jeg kunne tænke mig at lave en klasse(r) der kontrollere de forskellige slag. F.eks på scoreboardet er der en knap ud for f.eks enere så slår man måske 3 enere og vil tilføje denne værdi til textboxen der viser point for slåede enere, så klikker man på knappen ud for enere og værdien bliver angivet i boxen. Ja det lyder nok lidt kringlet. Det jeg så forstiller mig er man jeg kunne have en klasse der duer til at lave denne routine for alle slag med ens antal øjne (1-6 , 3 ens , fire ens , yatzy) og så kalde denne klasse fra min knap(per)Lyder det helt gak? Så bliver det nok mere tricky når jeg kommer til fullhouse og straights men det må jeg så tage til den tid. Spørgsmålet er også; hvordan kalder jeg denne klasse fra min(e)knap(per)? hvis det i det hele taget er en god ide at gøre sådan?
Avatar billede maxmuldjord Nybegynder
04. oktober 2004 - 12:47 #1
en ting mere

den brokker sig over at den vil have et ; efter denne
private void Button2_Click(object sender, System.EventArgs e)

Det er der ingen andre steder?
Avatar billede maxmuldjord Nybegynder
04. oktober 2004 - 14:03 #2
Jeg tænkte om et var nemmere at havd det er jeg fabler om: http://empty-site.org/Dices/Dices.aspx det skulle give en lille ide
Avatar billede snepnet Nybegynder
06. oktober 2004 - 18:47 #3
Nedenstående er hvad du får, hvis du i VS trækker en knap ind på en form, og dobbeltklikker på den.
(det er altså ikke noget du skal skrive selv, men det ville være godt hvis du kunne se fidusen i det).

En knap på en aspx-side
<asp:Button id="Button1" runat="server" Text="Button"></asp:Button>

Og en dekleration i din code-behind for knappen :
protected Button Button1;

Og i din initialiseringmetode angives det, at du gerne vil abbonnere på klik-eventet fra knappen
Button1.Click += new EventHandler(this.Button1_Click); // Button1_Click er så metoden der kaldes når der klikkes

Og selve handleren af klik-eventet
Bemærk at signaturen (object sender, EventArgs e) IKKE kan omgås... så skal en handler af et knap-klik event se ud.
(du kan dog godt omdøbe sender, og e hvis du vil... typerne object og EventArgs må du ikke ændre).
private void Button1_Click(object sender, EventArgs e)
{
  // her vil du så gerne kalde noget.
}

Såhh... hvis du har denne klasse :

public class SomeClass
{
    // og noget klassen kan
    public string GetSomeString()
    {
        return "hej";
    }
}

Kan du udfylde handleren som nedenstående :

private void Button1_Click(object sender, EventArgs e)
{
  // først en forekomst af typen SomeClass (et objekt)
  SomeClass sc = new SomeClass();
 
  // du kan så kalde metoden GetSomeString() på objektet da det jo er baseret på en type, der har en sådan metode defineret.
  string nogetTekst = sc.GetSomeString();
 
  // og det kan du så skrive ud hvis du vil (det med Response.Write er ikke en anbefaling).
  Response.Write(nogetTekst);
}
Avatar billede maxmuldjord Nybegynder
07. oktober 2004 - 16:38 #4
hov, smid lige et svar!

jeg kan stadigvæk ike forstå hvorfor den siger at den vil have et ; efter private void Button2_Click(object sender, System.EventArgs e)
Avatar billede snepnet Nybegynder
07. oktober 2004 - 16:49 #5
svar her :o)
næh... det lyder også lidt underligt.... kan du ikke poste lidt mere af koden ?
Avatar billede maxmuldjord Nybegynder
07. oktober 2004 - 16:58 #6
ja da kommer om lidt
Avatar billede maxmuldjord Nybegynder
07. oktober 2004 - 17:32 #7
jeg har forsøgt mig med denne kode i ren "deperado" stil. Det var noget jeg faldt over på nettet, grin bare! kan du forklare hvad den gør denne kode?

private void Button2_Click(object sender, System.EventArgs e)
       
            public int AddUpDice( int DieNumber, Dice[] myDice )
            {
                int Sum = 0;

                for( int i = 0; i < 5; i++ )
                {
                    if( myDice[i].RollNumber == DieNumber )
                    {
                        Sum += DieNumber;
                    }
Avatar billede maxmuldjord Nybegynder
07. oktober 2004 - 17:33 #8
dette mangler     }
                }

                return Sum;
            }
Avatar billede snepnet Nybegynder
07. oktober 2004 - 17:38 #9
nu fårstår jeg bedre fin fejlmelding :

// her påbegynder du en metode :
private void Button2_Click(object sender, System.EventArgs e)
// og lige nedenunder påbegynder du en til   
public int AddUpDice( int DieNumber, Dice[] myDice )

Prøv sådan her istedet :

private void Button2_Click(object sender, System.EventArgs e)
{     
  int Sum = 0;
  for( int i = 0; i < 5; i++ )
  {
      if( myDice[i].RollNumber == DieNumber )
      {
        Sum += DieNumber;
      }
    }
  return Sum;
}
Avatar billede snepnet Nybegynder
07. oktober 2004 - 17:39 #10
nu fårstår jeg bedre fin fejlmelding =
nu forstår jeg bedre din fejlmelding.
Avatar billede maxmuldjord Nybegynder
07. oktober 2004 - 18:01 #11
ok, det hjalp. Se hvis jeg nu skulle anvende dette, det er jo taget ud af en større sammenhæng, skal jeg så have myDice kaet om til navnet på min array? som hedder rnd

har jo denne:  private int RollDice()
        {
            return rnd.Next(1,7);
        }
Avatar billede snepnet Nybegynder
07. oktober 2004 - 18:04 #12
ok... der tabte du mig ?!?
Avatar billede maxmuldjord Nybegynder
07. oktober 2004 - 18:05 #13
ahhh, for at vende tilbage til min oprindlige plan om en klass jeg kan kalde fra knappen kunne jeg så have en klasse der hedder class DiceScore også i knappen lave en DiceScore = new DiceScore? eller lyder det helt gak?
Avatar billede snepnet Nybegynder
07. oktober 2004 - 18:09 #14
sådan lige umiddelbart lyder det mere relevant hvis du har et eller andet du kan gemme en score i, og som vil blive bevaret med hvert postback.
jeg tror jeg ville starte med at prøve at gemme en int til at begynder med... og så bare lægge summen til den int.
Avatar billede maxmuldjord Nybegynder
07. oktober 2004 - 18:12 #15
ok, prøver
Avatar billede maxmuldjord Nybegynder
07. oktober 2004 - 20:34 #16
måske er jeg på sporet af noget når jeg skrive følgende
        private void Button2_Click(object sender, System.EventArgs e)
        {     
            if (RollDice() == 1)
            Response.Write ("meee");
Så skriver den ganske rigtigt meee hvis der er en 1.er men jeg syntes ikke den gør det hver gang. Og hvordan får jeg den til at skrive i min textbox txtAces? Lad os sige jeg vil have meee til at stå der til en begyndelse når der et en 1.er
Avatar billede maxmuldjord Nybegynder
07. oktober 2004 - 20:43 #17
Nå det fandt jeg ud af if (RollDice() == 1)
            txtAces.Text= "meee";

men jeg syntes ikke det virker hvergang?
Avatar billede maxmuldjord Nybegynder
07. oktober 2004 - 21:02 #18
trode jeg var snedig men det var jeg ikke
        private void Button2_Click(object sender, System.EventArgs e)
        {     
            int i= 0;
            if (RollDice() == 1)
            if ( i = 1)
                i++;
            txtAces.Text= i;
Avatar billede maxmuldjord Nybegynder
07. oktober 2004 - 21:07 #19
hehe nu vil den ikke konvertere int til bool
                        int i= 1;
            if (RollDice() == i)
                if ( i = 1)
                i++;
            txtAces.Text= Convert.ToString (i);
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