События и кнопки - PullRequest
       1

События и кнопки

2 голосов
/ 13 июня 2011

Я хочу получать текст кнопки всякий раз, когда нажимаю на нее.

В алгоритме, который я сделал, у меня есть функция, представляющая собой цикл, который создает ряд кнопок и присваивает им номера:

    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 (кнопка b = новая кнопка, b.text);

Но проблема в том, как получить кнопки ,,,

Если есть лучший способ, я хотел бы услышать об этом ...

Ответы [ 4 ]

2 голосов
/ 13 июня 2011

вместо использования события нажатия -> Использовать командное событие: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.oncommand.aspx, тогда вы можете различить, какая кнопка была нажата

2 голосов
/ 13 июня 2011

Попробуйте вот так

public void page_Clicked(object sender, EventArgs e)
{

   Button btn=(Button)sender;
}
2 голосов
/ 13 июня 2011

Вам просто нужно привести объект 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 голос
/ 13 июня 2011

в вашем методе ListAllPage назначьте Tag каждой кнопке:

newBtn.Tag = i;

В вашем обработчике вы можете получить экземпляр кнопки из sender:

var clickedButton = (Button)sender;
int pageIndex = (int)clickedButton.Tag;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...