事件和按钮

时间:2011-06-13 09:42:37

标签: c# events button

每当我点击它时,我想获得按钮的文字。

我制作的算法是我有一个函数,它是一个循环,创建了许多按钮并分配数字:

    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);

但问题是如何检索按钮,,,

如果有更好的方法,我想听听它......

4 个答案:

答案 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;