事件和按钮
本文关键字:按钮 事件 | 更新日期: 2023-09-27 17:59:04
每当我点击按钮时,我都想得到它的文本。
我所做的算法是,我有一个函数,它是一个创建多个按钮并分配数字的循环:
void ListAllPage()
{
if (pageMax < 50)
{
//if page max less than 50
for (int i = 0; i < pageMax; i++)
{
Button newBtn = new Button();
newBtn.Text = i.ToString();
newBtn.Width = 50;
newBtn.Click += page_Clicked;
pageCell.Controls.Add(newBtn);
}
}
}
现在,按钮将出现在屏幕上,它们的事件将被触发,功能页面_Click;将被执行:
public void page_Clicked(object sender, EventArgs e)
{
//inside this function I want to obtain the button number that was clicked by the user. How do I do that?
}
注意,我必须在这里描述的所有功能,。。。
我的想法是把我在循环中创建的所有按钮都输入到字典中。。词典它将使用像这样的变量btindic。添加(按钮b=新按钮,b.text);
但问题是如何检索按钮、、
如果有更好的方法,我想听听…
而不是使用点击事件->使用命令事件:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.oncommand.aspx然后您可以区分哪个按钮被点击了
您只需要将sender
对象强制转换为Button
,或者更一般地说,Control
:
public void page_Clicked(object sender, EventArgs e)
{
Control c = sender as Control;
MessageBox.Show("Clicked on " + c.Text);
}
此外,使用Tag
属性存储自定义信息(编号)可能更合适。在这种情况下,Text
属性可以是您喜欢的任何属性。
尝试这种方式
public void page_Clicked(object sender, EventArgs e)
{
Button btn=(Button)sender;
}
在ListAllPage
方法中,将Tag
分配给每个按钮:
newBtn.Tag = i;
在您的处理程序中,您可以从sender
:获得按钮实例
var clickedButton = (Button)sender;
int pageIndex = (int)clickedButton.Tag;