0

ウィンドウのメイングリッドにボタンのマトリックスを作成し、それぞれのイベントも作成しました。また、各ボタンのいくつかのプロパティを含む整数マトリックスもあります (たとえば、int a[1,2] はボタン btn[1,2] のプロパティです)。チェスの騎士のように跳躍することでボタンからボタンへと移動できる迷路のようなものを作成する予定です。位置を変更できるように、押されたボタンの座標を見つける方法がわかりません。現在のボタンの。

 Button[,] btn = new Button[25, 25];
        for (x = 5; x <= n; x++)
        {
            for (y = 5; y <= n; y++)
            {
                btn[x, y] = new Button();
                left += 72;
                btn[x,y].Margin =new Thickness(left,top,0,0);
                btn[x,y].Height = 32;
                btn[x,y].Width = 32;
                btn[x, y].Click += new RoutedEventHandler(btn_Click);

                if (a[x, y] == 2)
                    btn[x,y].Background = Brushes.Red; 
                else
                    btn[x,y].Background = Brushes.Blue;
                main.Children.Add(btn[x, y]);


            }
            left = 0;
            top += 72;
        }

    }
    private void btn_Click(object sender, RoutedEventArgs e)
    {

    }
4

3 に答える 3

0

私はただクレイジーな考えに行きます.なぜあなた自身のものを作り、それを 、または何かButtonと呼んでみませんか? MazeButtonいくつかのプロパティから派生しButtonて追加し、継承を利用します。

public class MazeButton : System.Windows.Controls.Button {
private int left;
private int top;

//rest of implementation

}

このようにして、迷路内のボタンが存在する場所の情報をボタンに直接渡すことができます。カスタム イベントやその他の必要なものを定義できます。

于 2013-03-22T15:07:59.153 に答える
0

これを試して:

    private void btn_Click(object sender, RoutedEventArgs e)
    {

         Button btn = sender as Buttonl;
         if(btn!=null)
         {
             Point renderedLocation = btn.TranslatePoint(new Point(0, 0), this);
         }
         else
         {
              //you may throw an exception if you want.
         }
    }
于 2013-03-22T15:10:23.537 に答える