0

ゲーム レベル メニューのボタン クリック イベントごとに 1 つのパラメーターを渡す次のコードがあります。

    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));
    }
4

2 に答える 2

3

.Name は () の後にある必要があることを除いて、Sayse はほぼ正しく理解しました。

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

            switch (buttonName)
            {
                case "button1":
                    MessageBox.Show("Button1 pressed");
                    break;
                case "button2":
                    MessageBox.Show("Button2 pressed");
                    break;
            }

編集:

OP、各ボタンでイベントをリンクする方法を知っていますか?(イベントでは、ドロップダウン メニューをクリックして、以前に作成したイベントを選択するだけです)

于 2013-01-30T07:57:56.483 に答える
2

私のコメントに加えて、ボタンの名前の付け方によっては、使用できる場合があります

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

ボタンはボタンクラスです

次に、この文字列を解析して、名前に含まれている番号を取得します...

例えば

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

編集 名前を同じに保ちたい場合は、switch ステートメントを使用できます

string s;
switch(((Button)sender).Name)
{
case "btnLevelEasy":
s = "1";
break;
于 2013-01-30T07:46:48.970 に答える