按下另一个按钮后如何使用按钮发送器?

所以我正在制作一个国际象棋游戏(棋盘是 64 个按钮,具有相同的发送者),我想要做的是在他按下第二个按钮后,如果移动是合法的,它将第一个按钮背景图像设置为 null,第二个按钮设置为首先:


public void button_click(object sender, EventArgs e)

    {

        if (partOfTurn == false)

        {

            for (int x = 0; x <= 7; x++)

            {

                for (int y = 0; y <= 7; y++)

                {

                    if (Buttons[x, y] == ((Button)sender))

                    {

                        Ax = x;

                        Ay = y;

                    }

                }

            }

            place_holder.BackgroundImage = ((Button)sender).BackgroundImage;

            partOfTurn = true;

        }


        else if (partOfTurn == true)

        {

            for (int x = 0; x <= 7; x++)

            {

                for (int y = 0; y <= 7; y++)

                {

                    if (Buttons[x, y] == ((Button)sender))

                    {

                        Bx = x;

                        By = y;

                    }

                }

            }

            click();

            partOfTurn = false;

        }


        void click()

        {

            if (turn == true)

            {

                if (place_holder.BackgroundImage == Properties.Resources.White_Pown)

                {

                    if (Bx == Ax + 1 && By == Ay + 1 || Bx == Ax - 1 && By == Ay + 1)

                    {

        

    }

但为了做到这一点,我需要使用第二个的(Button)sender 和第一个来清除它。


我试图解决它并将背景按钮保存在占位符上,这样我就可以看到按下的按钮上的内容,但我仍然需要清除第一个按钮


有任何想法吗?


吃鸡游戏
浏览 71回答 1
1回答

慕妹3242003

要按顺序识别两个按钮,您需要将第一个按钮的引用存储为类级变量,例如previousButton。在点击代码的末尾指定它,以便您可以在下次点击时参考它。public partial class Form1 : Form{&nbsp; &nbsp; private Button previousButton = null;&nbsp; &nbsp; public Form1()&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; InitializeComponent();&nbsp; &nbsp; &nbsp; &nbsp; button1.Click += Buttons_Click;&nbsp; &nbsp; &nbsp; &nbsp; button2.Click += Buttons_Click;&nbsp; &nbsp; }&nbsp; &nbsp; private void Buttons_Click(object sender, EventArgs e)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; if (previousButton != null)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // do something with previousButton&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; // code to work with the currently clicked button&nbsp; &nbsp; &nbsp; &nbsp; // as (Button)sender&nbsp; &nbsp; &nbsp; &nbsp; // remember the current button&nbsp; &nbsp; &nbsp; &nbsp; previousButton = (Button)sender;&nbsp; &nbsp; }}如果按钮序列总是成对发生,那么一旦成对序列完成,设置previousButton回null. 这告诉您将开始一个新的“序列”。
打开App,查看更多内容
随时随地看视频慕课网APP