Announcement

Collapse
No announcement yet.

wie funzt der typecast

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • wie funzt der typecast

    Hallo,

    îch möchte hier bei sender:
    Code:
    private void button2_Enter(object sender, System.EventArgs e)
    {
    an die eigenschaft Text von Button2 ran.

    wie funzt der Typecast?
    es soll was allgemeines sein?
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

  • #2
    Hallo markus lemcke,

    was meinst Du mit:
    es soll was allgemeines sein?
    Allgemeiner als ein "object"?

    Nein, ein cast geht folgendermaßen:

    Code:
    private void button2_Enter(object sender, System.EventArgs e)
    {
       string myText = ((System.Windows.Forms.Button)sender).Text;
       // ...
    }
    Das ist für dieses Event-System legitim und sogar der einzige Weg.

    Gruß
    Norman-Timo

    Comment


    • #3
      Hallo Norman-Timo,

      funzt! genau das wollte ich! aber wie kommt man auf sowas?
      (die Anordnung der Klammern)
      Herzliche Grüße

      Markus Lemcke
      barrierefreies Webdesign

      Comment


      • #4
        Hallo markus lemcke,

        aber wie kommt man auf sowas? (die Anordnung der Klammern)
        Das ist quasi nur eine Zusammenfassung mehrerer logischen Operationen. Auseinandergeschachtelt würde folgendes stehen:

        Code:
        System.Windows.Forms.Button myButton = (System.Windows.Forms.Button) sender; // <- hier ist die Klammerung eine Cast-Anweisung (nach definition C#)
        string myText = myButton.Text;
        Wenn man jetzt obige Zeile zusammenfassen möchte, muss man sich überlegen in welcher Reihenfolge das Ganze abgearbeitet wird. Daher müssen die Klammerungen so erfolgen, wie ich oben gepostet habe.

        Grüße
        _ntr_

        Edit:
        Das ist quasi wie das Gleichungssystem in Mathe mit Ersetzen und Klammerung einzelner Operationen ;-)

        Comment


        • #5
          okay, danke!
          Herzliche Grüße

          Markus Lemcke
          barrierefreies Webdesign

          Comment


          • #6
            Hallo,

            Obwohl das schon geklährt ist und in diesem Fall auch nicht unbedingt nötig ist, würde ich dir folgendes empfehlen.

            Benutze den "as" Operator. (Fals du nicht casten sondern nur vergleichen willst, gibt es "is")
            Dieser ist für alle referenz typen anwendbar.
            Z.B.:
            Code:
            Button bTest = sender as Button;
            Diese Vorgehensweise hat den Vorteil, das keine Exception geworfen wird wenn der cast nicht funktioniert! (Bedeutet für dich den Vorteil, das keine try/catches nötig sind)
            Nach dem "as" statement sollte immer eine "!=null" abfrage kommen, bevor du die soeben erschaffene Buttonreferenz weiterbenutzt.
            Code:
            if(bTest!=null)
            {
                string sButtonText = bTest.Text;
            }
            Das "null" setzen ist die reaktion des "as" castens wenn die Typen nicht kombinierbar sind.

            Hoffe es hat geholfen!

            Grüße

            Martin
            Grüße,

            Martin

            Comment


            • #7
              Hallo Martin#,

              könntest Du mal bitte das hier:
              Code:
              textBox1.Text = ((System.Windows.Forms.Button)sender).Text;
              mit dem as-Operator umschreiben bitte!
              habe das ding fast nie verwendet!
              Herzliche Grüße

              Markus Lemcke
              barrierefreies Webdesign

              Comment


              • #8
                Sicher doch!

                Code:
                System.Windows.Forms.Button bAct = sender as System.Windows.Forms.Button;
                if(bAct!=null)
                {
                    textBox1.Text = bAct.Text;
                }
                Grüße

                Martin
                Grüße,

                Martin

                Comment

                Working...
                X