Wofür denn genau ein Beispiel? Serialisierung schaust du dir am besten selbst an. - Da gibt es genügend Tutorials im Netz.
Das Registrieren der Eventhandler könnte so aussehen (Sorry dürfte eher nach C# aussehen, was dem aber kein Abbruch tut):
foreach(MeinObject object in objectlist)
{
object.Click += new EventHandler(ObjectClick);
}
Die ObjektClick-Methode müsste dann wie folgt aussehen:
private void ObjectClick(Object sender, EventArgs e)
{
MeinObject object = (MeinObject)sender; // so könntest du an den Namen des Objectes kommen / natürlich auch alle anderen Properties
// weitere Verarbeitung
// Das wäre dann der Aufruf deiner eigenen Methode
MeineMethode(object.Nummer);
}
Die Anpassung an C++/Cli sollte eigentlich kein Problem sein. - Die Sache mit dem Label, verstehe ich es richtig, dass für jedes Bild dann ein Label existieren soll? - Da könntest du in dem moment wo du das Bild zeichnest ebenfalls direkt ein Label erstellen.
So in etwa (Solltest du aus der OnPaint aufrufen):
private void ZeichneObjekte()
{
foreach(MeinObject object in objects)
{
PictureBox pbBild = new PictureBox();
pbBild.Height = object.Bild.Height;
pb.Width = object.Bild.Widht;
pb.Top = positionX;
pb.Left = positionY;
Label meinLabel = new Label();
meinLabel.Text = object.Text;
meinLabel.Top = positionY + object.Bild.Height;
meinLabel.Left = positionX;
this.Controls.Add(pbBild);
this.Controls.Add(meinLabel);
}
}
Natürlich wäre das alles ungetesteter Code, aber so in etwa solltest du es hinbekommen.