开发者

Button id as an event handler

开发者 https://www.devze.com 2023-02-03 10:15 出处:网络
I am creating 7 buttons on the fly when i create the but开发者_运维百科tons i am trying to have an event handler than can deal with all clicks in one method via a switch. Ideally i want to pass an id

I am creating 7 buttons on the fly

when i create the but开发者_运维百科tons i am trying to have an event handler than can deal with all clicks in one method via a switch. Ideally i want to pass an id with the button that indicates what was clicked, opposed to this solution of

void pdfButton_Click(object sender, EventArgs e)
{
    Button b = (Button)sender;
    Console.WriteLine(b.Text);
}

as all of the buttons using this event handler have the same text. I have a unique id associated witht the buttons but no idea how to send them

thanks


You can use the Name or Tag properties.


Put the ID in the Tag property on the button when you create them and then check the ID in your event handler.

Button button = new Button();
button.Tag = 1;

...

void pdfButton_Click(object sender, EventArgs e)
{
    Button b = (Button)sender;
    switch ((int)b.Tag)
    {
        ...
    }

}


First: Bad practice to handle several clicks in one event via switch. But however a solution would be:

Create your own control which inherits the button and ad your ID as an property. So you can access it via:

MyButton b = (MyButton)sender;

switch(b.ID) { 
    //Code goes here 
}


If each button you add has a unique Id, why not just use the ID property of the button?

Button button = new Button();
button.ID= "Button1";

//...

void pdfButton_Click(object sender, EventArgs e)
{
    Button b = (Button)sender;
    switch(button.ID)
    {
        case "Button1":
          //...
    }

}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号