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;