0

C# WinForms プロジェクトに問題があります。ボタン同士が接触した場合にボタンの位置を変更する機能があります。たとえば、btn1atoldloction = (4,2)btn2atoldlocaction (2,6)がある場合、ボタンを移動するとそれらが接触bt1 new location = (2,6)し、bt2 new location = (4,2) 今では 2 つのボタンでそれを実行すると機能します。

locationx - means the x  location on the button and its orgenize firat place of the location feat to the first buttons[0], the second feat to locationx[1] = buttons[1].location.x;
location - works the same ass locationx but uts the y locaion. 

    private void myText_MouseUp(object sender, MouseEventArgs e)
    {
       Point oldlocation = new Point(locationx[0], locationy[0]);
       Point oldlocation2 = new Point(locationx[1], locationy[1]);
       if (buttons[0].Location.Y == buttons[1].Location.Y)
       {
           buttons[1].Location = oldlocation;
           buttons[0].Location = oldlocation2;
       }
    }

それをグローバル関数として作ろうとしたとき、うまくいかず、その理由がわかりません。

これは、機能しないグローバル関数のコードです。

  private void myText_MouseUp(object sender, MouseEventArgs e)
    {

        for (int i = 0; i < counter; i++)
        {
            Point oldlocation = new Point(locationx[i], locationy[i]);
            for (int j = 0; j < counter; j++)
            {
                if (i != j)
                {
                    Point oldlocation2 = new Point(locationx[j], locationy[j]);
                    if (buttons[i].Location.Y != buttons[j].Location.Y)
                    {
                        buttons[j].Location = oldlocation2;
                        buttons[i].Location = oldlocation;
                    }
                    else if (buttons[i].Location.Y == buttons[j].Location.Y)
                    {
                        buttons[j].Location = oldlocation;
                        buttons[i].Location = oldlocation2;
                    }
                }

            }
        }
    }
4

2 に答える 2

1

独自のボタン イベントを作成するのではなく、押されたときに関数を呼び出すためのボタン イベントを使用してみてください。

于 2012-05-29T17:07:54.837 に答える