所以我正在做一个国际象棋游戏(棋盘上有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)
{
if (((Button)sender).BackgroundImage == Properties.Resources.Black_Pown||
((Button)sender).BackgroundImage == Properties.Resources.Black_Rook||
((Button)sender).BackgroundImage == Properties.Resources.Black_Knight||
((Button)sender).BackgroundImage == Properties.Resources.Black_Bishop||
((Button)sender).BackgroundImage == Properties.Resources.Black_Queen||
((Button)sender).BackgroundImage == Properties.Resources.Black_King)
{
//set the background image of the first to null and of the other button to the first.
}
}
}
}
}
}
但是,为此,我需要使用第二个按钮的(Button)发送器,也需要使用第一个按钮的发送器来清除它。
我尝试解决此问题,并将背景按钮保存在占位符上,以便可以看到被按下的按钮上的内容,但我仍然需要清除第一个按钮
有什么想法吗?
答案 0 :(得分:0)
要依次识别两个按钮,您需要将对第一个按钮的引用存储为类级别的变量,例如previousButton。在点击代码的末尾分配此代码,以便下次点击时可以引用它。
public partial class Form1 : Form
{
private Button previousButton = null;
public Form1()
{
InitializeComponent();
button1.Click += Buttons_Click;
button2.Click += Buttons_Click;
}
private void Buttons_Click(object sender, EventArgs e)
{
if (previousButton != null)
{
// do something with previousButton
}
// code to work with the currently clicked button
// as (Button)sender
// remember the current button
previousButton = (Button)sender;
}
}
如果按钮序列始终成对出现,则在完成配对序列后,将previousButton
设置回null
。这告诉您新的“序列”将开始。