C# 事件和按钮
每当我点击按钮时,我都想得到它的文本 我所做的算法是,我有一个函数,它是一个循环,创建许多按钮并分配数字:C# 事件和按钮,c#,events,button,C#,Events,Button,每当我点击按钮时,我都想得到它的文本 我所做的算法是,我有一个函数,它是一个循环,创建许多按钮并分配数字: void ListAllPage() { if (pageMax < 50) { //if page max less than 50 for (int i = 0; i < pageMax; i++) { Button new
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);
}
}
}
注意,我必须记住我在这里描述的所有函数
我的想法是将我在循环中创建的所有按钮输入到字典中。。
字典。。它将接受像btndic.Add这样的变量(按钮b=新建按钮,b.text)
但问题是如何检索按钮
如果有更好的办法,我想听听 您只需将
发送方
对象强制转换为按钮
,或者更一般地,转换为控件
:
public void page_Clicked(object sender, EventArgs e)
{
Control c = sender as Control;
MessageBox.Show("Clicked on " + c.Text);
}
此外,使用标记
属性存储自定义信息(编号)可能更合适。在这种情况下,Text
属性可以是您喜欢的任何内容。试试这种方法
public void page_Clicked(object sender, EventArgs e)
{
Button btn=(Button)sender;
}
在
ListAllPage
方法中,为每个按钮分配Tag
:
newBtn.Tag = i;
在处理程序中,您可以从发送方
获取按钮实例:
var clickedButton = (Button)sender;
int pageIndex = (int)clickedButton.Tag;
不要使用单击事件->使用命令事件:然后您可以区分哪个按钮被单击
标记
没有名称空间。它是控件的属性
:
var clickedButton = (Button)sender;
int pageIndex = (int)clickedButton.Tag;