繁体   English   中英

如何将额外的参数传递给点击事件?

[英]How to pass extra parameter to Tapped Event?

我在Windows Phone应用程序8.1中以编程方式创建了10个TextBlock
现在我想向每个TextBlock添加Tapped事件并向其传递额外的参数,以便我可以找到哪个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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM