I have a Windows form named Form1
and panel within this form named panel1
. I use the panel only to place buttons there so that I can group them and
private void HandleClick(object sender, EventArgs e)
{
var btn = sender as Button;
if (btn != null)
{
MessageBox.Show(btn.Text);
}
}
You need to cast sender
to the Button
class so you can access its properties:
Button b = (Button)sender;
MessageBox.Show(b.Text);
One option is to cast the object to a Button
, but rather than doing the casting you can change how the event handler is assigned so that you don't need to cast in the first place:
foreach (var button in panel1.Controls.OfType<Button>())
{
button.Click += (_,args)=> HandleClick(button, args);
}
Then just change the signature of HandleClick
to:
private void HandleClick(Button button, EventArgs e);