如何将额外的参数传递给Tapped Event
本文关键字:参数传递 Tapped Event | 更新日期: 2023-09-27 18:00:54
我在Windows手机应用程序8.1中以编程方式创建10个文本块
现在,我想将Tapped事件添加到每个TextBlock,并将额外的参数传递给它,这样我就可以找到哪个TextBlock被点击了
我使用此代码创建带有Tapped事件的TextBlock:
for (int i=1;i<11;i++)
{
TextBlock txtName = new TextBlock();
txtName.Tapped += TxtName_Tapped;
}
private void TxtName_Tapped(object sender, TappedRoutedEventArgs e)
{
// Something
}
如何传递额外的参数?
正如@Ric建议的那样,您可以随时执行:
private void TxtName_Tapped(object sender, TappedRoutedEventArgs e)
{
clickedElementName = ((TextBlock)sender).Name ;
if(clickedElementName == "element1")
{
}
}
您可以使用sender
参数来标识TextBlock
,而不是发送额外的参数。
for (int i=1;i<11;i++)
{
TextBlock txtName = new TextBlock();
txtName.Name = i.ToString();
txtName.Tapped += TxtName_Tapped;
}
private void TxtName_Tapped(object sender, TappedRoutedEventArgs e)
{
TextBlock textBlock = sender as TextBlock;
switch(textBlock.Name)
{
// list possible cases
case "1":
{
// do something
}
}
}
也许你甚至不需要switch语句,因为我不知道确切的要求。
在我看来,非常简单的解决方案是使用Tag
属性:
for (int i=1;i<11;i++)
{
TextBlock txtName = new TextBlock();
txtName.Tag = i;
txtName.Tapped += TxtName_Tapped;
}
和:
private void TxtName_Tapped(object sender, TappedRoutedEventArgs e)
{
int tag = ((TextBlock)sender).Tag;
//do something
}