事件和按钮

本文关键字:按钮 事件 | 更新日期: 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;