我的程式在運行時動態創建了許多按鈕。所有這些都附加到一個 EventHandler 上,后者鏈接到相同的方法。如何知道方法執行時按下了哪個按鈕?我嘗試使用 sender.Name,因為物件 sender 在運行時是一個 Button,但它不能編譯。
List<Button> buttons = new List<Button>();
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 1; i < 3; i )
{
buttons.Add(new Button() { Name = "btn" i });
buttons.Last().Click = new EventHandler(btn_Click);
}
}
public void btn_Click(object sender, EventArgs e)
{
MessageBox.Show(sender.Name " is clicked");
}
uj5u.com熱心網友回復:
你在正確的軌道上。
你的問題是,在btn_Click中sender是通用的object,所以編譯器不知道它是什么型別,所以你需要通過鑄造來告訴它。
public void btn_Click(object sender, EventArgs e)
{
Button senderButton = (Button)sender;
MessageBox.Show(senderButton.Name " is clicked");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/379703.html
上一篇:通過名稱作為字串訪問物件c#
