Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 5 von 5

Thema: gleiches Event für mehrere Objekte mittels Schleife abfragen

  1. #1
    Registriert seit
    01.09.2011
    Beiträge
    73
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten morgen,
    Ich habe heute ein neues aber vielleicht einfaches Problem und zwar geht es um folgendes:
    Ich programmiere in der Sprache C#. Außerdem will ich in einem panel 32 Pictureboxen darstellen, falls einem die Zahl 32 bekannt vor kommt, genau es handelt sich um ein Kartenspiel

    Auf jeden fall will ich es realisieren dass wenn man über die Karte fährt, sich diese etwas anhebt und beim verlassen der Karte sich diese wieder etwas senkt.

    bisher habe ich das so gelöst, dass ich das MouseMove und das MouseLeave event benutze, jedoch dies wird relativ unübersichtlich wenn ich dies für jede einzelne picturebox so mache. Deshalb ist hier meine Frage, ob ich die picturebox bzw. deren Location auch allgemein setzen und abfragen kann?

    Bisher habe ich dies so realisiert:

    private void pictureBox_alle_Karten_erste_Haelfte_1_MouseMove(object sender, MouseEventArgs e)
    {
    pictureBox_alle_Karten_erste_Haelfte_1.Location = new Point(pictureBox_alle_Karten_erste_Haelfte_1.Location.X, y - 9);
    }
    private void pictureBox_alle_Karten_erste_Haelfte_1_MouseLeave(object sender, EventArgs e)
    {
    pictureBox_alle_Karten_erste_Haelfte_1.Location = aktuelle_pos;
    }

    Aber wie gesagt dies für 32 oobjekte bzw. später wieder für 32 andere Objekte zu machen ist relativ aufwändig und Coderaubend...

    Hat mir da jemand eine andere Lösung?
    Zur Not würde ich auch eine neue Klasse (Karte:Picturebox) machen, wenn ich in ihr sagen könnte, MouseMove() und MouseLeave(), bin mir jedoch nicht sicher ob dies überhaupt geht...
    Zitieren Zitieren gleiches Event für mehrere Objekte mittels Schleife abfragen  

  2. #2
    Registriert seit
    26.04.2010
    Ort
    Fürth
    Beiträge
    10
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Guten Morgen,

    Damit du nicht 32x das gleiche Event hinschreiben musst kannst du dir es einfach machen und dies nur einmal machen und die restlichen male auf dieses verweisen.

    Zuerst folgendes Code-fragment:
    Code:
    private Point last_pos;
            private Point new_pos = new Point();
            private PictureBox pbox;
            private void pbox_MouseEnter(object sender, EventArgs e)
            {
                pbox = (PictureBox)sender;
                last_pos = pbox.Location;
                new_pos = new Point(pbox.Location.X, pbox.Location.Y - 9);
                pbox.Location = new_pos;
            }
    
            private void pbox_MouseLeave(object sender, EventArgs e)
            {
                pbox = (PictureBox)sender;
                pbox.Location = last_pos;
            }
    Jetzt anstatt jeder Picturebox über das Eigenschaftenfenster die Events zuzuweisen geh in die zeile unter InitializeComponent(); und füge die Events folgendermaßen hinzu:
    Code:
                // Events für PictureBox 1
                this.pictureBox1.MouseEnter += new System.EventHandler(this.pbox_MouseEnter);
                this.pictureBox1.MouseLeave += new System.EventHandler(this.pbox_MouseLeave);
    
                // Events für PictureBox 2
                this.pictureBox2.MouseEnter += new System.EventHandler(this.pbox_MouseEnter);
                this.pictureBox2.MouseLeave += new System.EventHandler(this.pbox_MouseLeave);
    C# 2010 Project
    MoveObject.zip
    Mit freundlichem Gruß

    Manuel König

  3. Folgender Benutzer sagt Danke zu mkoenig für den nützlichen Beitrag:

    Benni (23.01.2012)

  4. #3
    Benni ist offline Benutzer
    Themenstarter
    Registriert seit
    01.09.2011
    Beiträge
    73
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hey Manuel,
    cool Danke, dann versuch ich mal mein bestes...

    Gruß Benni

  5. #4
    Benni ist offline Benutzer
    Themenstarter
    Registriert seit
    01.09.2011
    Beiträge
    73
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke, ich habs nun so ähnlich hinbekommen, dank dir vielmals das hat mich nun ein Stück weitergebracht.

    Weißt du eigentlich wie das hier läuft? Wenn ein Thread erledigt ist, wird der dann nach einer Weile automatisch geschlossen oder muss man das irgendwie manuell erledigen? Wenn manuell, dann wie?

    Gruß Benni

  6. #5
    Registriert seit
    26.04.2010
    Ort
    Fürth
    Beiträge
    10
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Tut mir leid da bin ich überfragt. Bis jetzt hatte ich noch keine eigenen threads hier offen.
    Mit freundlichem Gruß

    Manuel König

Ähnliche Themen

  1. Mehrere gleiche AMS-Net-ID per TC-ADS abfragen?
    Von TobiasS im Forum CODESYS und IEC61131
    Antworten: 10
    Letzter Beitrag: 24.05.2011, 11:05
  2. Event erzuegen
    Von schneemann86 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 03.07.2009, 21:37
  3. Event?
    Von Tom im Forum HMI
    Antworten: 0
    Letzter Beitrag: 23.03.2009, 17:18
  4. Antworten: 3
    Letzter Beitrag: 19.11.2008, 10:21
  5. mehrere DB´s mittels SEND/RECEIVE übertragen
    Von Grimsey im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 11.12.2007, 12:08

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •