如何将多个传递值的点击事件合并为一个

本文关键字:合并 事件 一个 | 更新日期: 2023-09-27 17:56:49

我有以下代码,我为游戏关卡菜单的每个按钮单击事件传递一个参数。

    private void btnLevelVeryEasy_Click(object sender, RoutedEventArgs e)
    {
        NavigationService.Navigate(new Uri("/GamePlay.xaml?parameter=0", UriKind.Relative));
    }
    private void btnLevelEasy_Click(object sender, RoutedEventArgs e)
    {
        NavigationService.Navigate(new Uri("/GamePlay.xaml?parameter=1", UriKind.Relative));
    }
    private void btnLevelMedium_Click(object sender, RoutedEventArgs e)
    {
        NavigationService.Navigate(new Uri("/GamePlay.xaml?parameter=2", UriKind.Relative));
    }
    private void btnLevelHard_Click(object sender, RoutedEventArgs e)
    {
        NavigationService.Navigate(new Uri("/GamePlay.xaml?parameter=3", UriKind.Relative));
    }
    private void btnLevelInsane_Click(object sender, RoutedEventArgs e)
    {
        NavigationService.Navigate(new Uri("/GamePlay.xaml?parameter=4", UriKind.Relative));
    }

我的问题是,如何通过让所有按钮触发一键式事件并传递唯一参数来更优雅地做到这一点?类似的东西

    private void btnLevel_Click(object sender, RoutedEventArgs e)
    {
        NavigationService.Navigate(new Uri("/GamePlay.xaml?parameter=[buttontag]", UriKind.Relative));
    }

如何将多个传递值的点击事件合并为一个

> Saye 几乎做对了,除了 .名称应位于 () 之后:

string buttonName = ((Button)sender).Name;
            switch (buttonName)
            {
                case "button1":
                    MessageBox.Show("Button1 pressed");
                    break;
                case "button2":
                    MessageBox.Show("Button2 pressed");
                    break;
            }

编辑:

OP,您知道如何在每个按钮上链接事件吗?(在事件中,只需单击下拉菜单并选择之前创建的事件)

进一步到我的评论,根据您的按钮命名方式,您可以使用

string buttonName = ((Button)sender).Name;

按钮是你的按钮类

然后解析此字符串以获取已包含在您名称中的数字...

例如

string lastChar = buttonName[buttonName.length - 1];

编辑 如果您希望保持名称相同,则可以使用 switch 语句

string s;
switch(((Button)sender).Name)
{
case "btnLevelEasy":
s = "1";
break;