#c# #events #button
#c# #Мероприятия #кнопка
Вопрос:
Я хочу получать текст кнопки всякий раз, когда я нажимаю на нее.
Алгоритм, который я создал, заключается в том, что у меня есть функция, представляющая собой цикл, который создает несколько кнопок и присваивает им номера:
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.текст);
Но проблема в том, как извлечь кнопки,,,
если есть способ получше, я хотел бы услышать об этом…
Ответ №1:
вместо того, чтобы использовать событие щелчка -> Используйте событие команды: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.oncommand.aspx тогда вы сможете определить, какая кнопка была нажата
Ответ №2:
Вам просто нужно привести sender
объект к Button
или, в более общем смысле, к Control
:
public void page_Clicked(object sender, EventArgs e)
{
Control c = sender as Control;
MessageBox.Show("Clicked on " c.Text);
}
Также, возможно, было бы более уместно использовать Tag
свойство для хранения вашей пользовательской информации (number). В этом случае Text
свойством может быть все, что угодно.
Ответ №3:
Попробуйте этот способ
public void page_Clicked(object sender, EventArgs e)
{
Button btn=(Button)sender;
}
Ответ №4:
в вашем ListAllPage
методе назначьте Tag
каждой кнопке:
newBtn.Tag = i;
В вашем обработчике вы можете получить экземпляр кнопки из sender
:
var clickedButton = (Button)sender;
int pageIndex = (int)clickedButton.Tag;
Комментарии:
1.
tag
не имеет пространства имен. Это свойствоControl
: msdn.microsoft.com/en-us/library /…