每当我点击它时,我想获得按钮的文字。
我制作的算法是我有一个函数,它是一个循环,创建了许多按钮并分配数字:
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);
}
}
}
现在按钮将出现在屏幕上,它们的事件将被触发并且功能page_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?
}
注意,我必须完成我在这里描述的所有功能......
我的想法是将我在循环中创建的所有按钮提供给字典。 字典..它将采取像这样的变量btndic.Add(Button b = new Button,b.text);
但问题是如何检索按钮,,,
如果有更好的方法,我想听听它......
答案 0 :(得分:2)
您只需将sender
对象转换为Button
,或者更常见的是Control
:
public void page_Clicked(object sender, EventArgs e)
{
Control c = sender as Control;
MessageBox.Show("Clicked on " + c.Text);
}
此外,使用Tag
属性存储您的自定义信息(数字)可能更合适。在这种情况下,Text
属性可以是您喜欢的任何内容。
答案 1 :(得分:2)
试试这种方式
public void page_Clicked(object sender, EventArgs e)
{
Button btn=(Button)sender;
}
答案 2 :(得分:2)
而不是使用点击事件 - &gt;使用命令事件:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.oncommand.aspx然后您可以区分已单击的按钮
答案 3 :(得分:1)
在ListAllPage
方法中为每个按钮分配Tag
:
newBtn.Tag = i;
在您的处理程序中,您可以从sender
获取按钮实例:
var clickedButton = (Button)sender;
int pageIndex = (int)clickedButton.Tag;