Entwickler-Ecke

WinForms - Einer,..., PictureBox ein Ereignis zuweisen


Neidhard von Reuental - Sa 11.03.06 13:01
Titel: Einer,..., PictureBox ein Ereignis zuweisen
Hallo, folgendes Problem beschäftigt mich zur Zeit.
Ich habe ein dynamisches Array, welches zur Laufzeit mit PictureBoxen gefüllt wird. Diese PictureBoxen sollen auf DoubleClick-Ereignisse reagieren nur hab ich keine Ahnung wie ich den PictureBoxen diese Procedure zuweisen soll und wie ich auswerte welche PictureBox geklickt wurde.
Hat einer eine Idee und Tips?

Cu
Neid


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Sa 11.03.2006 um 12:03


Christian S. - Sa 11.03.06 13:10

So geht es:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
    void MainFormLoad(object sender, System.EventArgs e)
    {
      pictureBox1.DoubleClick += new EventHandler(pictureBox1_DoubleClick);
    }
    
        void pictureBox1_DoubleClick(object sender, EventArgs e)
        {
          MessageBox.Show("Wer klickt mich?");
        }


In Delphi benutzt Du statt des += Operators die Prozedur "Include". Kannst Dir dazu mal den vom FormDesigner erzeugten Code ansehen, da wird die Prozedur auch benutzt, um Komponenten ihre Ereignisse zuzuweisen.


Neidhard von Reuental - So 12.03.06 09:26

user profile iconChristian S. hat folgendes geschrieben:

In Delphi benutzt Du statt des += Operators die Prozedur "Include". Kannst Dir dazu mal den vom FormDesigner erzeugten Code ansehen, da wird die Prozedur auch benutzt, um Komponenten ihre Ereignisse zuzuweisen.


Genau das hat mir geholfen.
Kommt mir bald vor, als würdest du mir immer persönlich zur Seite stehen :) thx

Jetz, wo ich weiter im Buch suche, finde ich auch noch die Function ^^ (Delphi 2005 - Delphi programmieren mit dem .NET Framework S.139)

Hier mal ein Beispiel für alle die auch danach suchen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm.PictureBoxAdd;
var
  l:integer; 
begin
  .
  .
  .
  AoPB[l].Tag:=l;  // In Tag wird die Eintragsnummer geschrieben, ist für die spätere Auswertung notwendig
  Include(AoPB[l].DoubleClick, Self.SelClick);  // AoPB ist ein Array of PictureBox - hier wird die Procedure SelClick mit der PictureBox verknüpft
end;

procedure TForm.SelClick(sender: System.Object; e: System.EventArgs);
var
  i:integer;
begin
  i:=Integer((sender as PictureBox).Tag);  //der Tag-Wert wird in i gespeichert
  MessageBox.Show('From Image:'+i.ToString,'Dbl_Click');  // MessageBox zeigt Nummer der geklickten PictureBox an
end;