我正在尝试编写匹配的游戏。我的想法是:
(1)。单击某个pictureBox1
时,它将变为不可见
(2)。显示MessageBox
,提示“选择另一个方框。”
(3)。最后,我需要编写一个if/else
语句,如果单击pictureBox13
,它将变为不可见; else
,(如果点击了其他pictureBox
)MessageBox
会提示“再试一次。”两个图片框都变得不可见,但我不知道是什么我做错了:
// Program From Below
private void pictureBox1_Click(object sender, EventArgs e)
{
MessageBox.Show("Now Pick Another Hidden Picture!");
pictureBox1.Visible = false;
if (pictureBox13_Click)
{
MessageBox.Show("Great!");
pictureBox13.Visible = false;
}
else
{
MessageBox.Show("Try Again!");
}
}
if (pictureBox13_Click)
答案 0 :(得分:2)
如果每个PictureBox都有一个状态会更好,然后你可以使用Click_Event进行操作。 Microsoft在此处提供了一个关于匹配游戏的综合教程:https://msdn.microsoft.com/en-us/library/dd553235.aspx
答案 1 :(得分:1)
正如其他建议的那样,您可以对所有图片框使用相同的事件处理程序,并将sender
投射到PictureBox
以查看点击的PB:
List<string> selectedPictureBoxes;
public MyForm() // ctor
{
selectedPictureBoxes = new List<string>();
foreach(Control c in this.Controls)
if(c is PictureBox) c.Click += pictureBox_Click;
}
private void pictureBox_Click(object sender, EventArgs e)
{
PictureBox _clicked = sender as PictureBox;
if(!selectedPictureBoxes.Contains(_clicked.Name))
selectedPictureBoxes.Add(_clicked.Name);
else ....
}
答案 2 :(得分:0)
您可以为所选框(在此示例中为box1和box2)创建int
,这两个框都设置为0,然后创建一个on click事件,将int设置为单击的框。
if(box1 != 0)
{
box2 = 'insert selected box number'
}
else
{
box1 = 'insert selected box number'
}
选择了两个框后,integers
都可以设置为false,这样您就可以使用switch
代替if
,这可能会大大缩短代码每对图片都需要单独的if
语句。