opcja 2
public class PictureBoxEx : PictureBox
{
public string PhotoPath {get;set;}
}
// gdzieć obsługa zdarzenia Click
void pictureBoxEx_Click(object sender, EventArgs e)
{
PictureBoxEx p = sender as PictureBoxEx;
if (p != null)
{
OpenBigPhoto(p.PhotoPath);
}
}
Zamiast tworzyć pictureBoxy, tworzysz PictureBoxEx i ustawiasz właściwość PhotoPath, a w obsłudze zdarzenie pobierasz z niej ścieżkę do dużego obrazka.
opcja 3
public class PictureBoxEx2EventArgs : EventArgs
{
public string PhotoPath {get; private set;} // argumenty powinny mieć właściwości tylko do odczytu!!! set jest prywatny, dlatego mogę go użyć w konstruktorze, ale w innej klasie nie będę mógł zmienić tej właściwości
public PictureBoxEx2EventArgs(string photoPath)
{
this.PhotoPath = photoPath;
}
}
public class PictureBoxEx2 : PictureBox
{
public event EventHandler<PictureBoxEx2EventArgs> ClickEx;
public string PhotoPath {get;set;} // oczywiście możesz mieć gdzie indziej składowaną ścieżkę, ale musisz ją skądś mieć żeby przekazać do argumentów zdarzenia
private override void OnClick(EventArgs e)
{
base.OnClick();
if (ClickEx != null) // jeśli nie ma obsługi zdarzenia, to eventHandler jest null, należy sprawdzić, niektórzy o tym zapominają
ClickEx(this, new PictureBoxEx2EventArgs(this.PhotoPath));
}
}
// gdzieć obsługa zdarzenia Click
void pictureBoxEx2_ClickEx(object sender, PictureBoxEx2EventArgs e)
{
OpenBigPhoto(e.PhotoPath);
}