繁体   English   中英

如果 PictureBox 单击事件

[英]If PictureBox Clicked Event

我正在尝试编写匹配游戏。 我的想法是:

(1). 当某个pictureBox1被点击时,它变得不可见

(2). 出现一个MessageBox ,提示“选择另一个框”。

(3). 最后,我需要pictureBox13一个if/else语句,如果点击pictureBox13 ,它就会变得不可见; else ,(如果单击另一个图片pictureBoxMessageBox提示“再试一次”。 两个图片框都变得不可见,但我不知道我做错了什么:

    // 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)下面有一条红色的波浪线

如果每个 PictureBox 都有一个状态会更好,然后您可以使用 Click_Event 进行操作。 微软在这里有一个匹配游戏的综合教程: https : //msdn.microsoft.com/en-us/library/dd553235.aspx

正如其他人建议的那样,您可以对所有PictureBox使用相同的事件处理程序,并将senderPictureBox以查看点击了 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 ....
}

您可以为选定的框(在本例中为 box1 和 box2)创建一个int ,它们都设置为 0,然后创建一个点击事件,将 int 设置为单击的框。

if(box1 != 0) 
    {
        box2 = 'insert selected box number'
    }
    else
    {
        box1 = 'insert selected box number'
    }

选择两个框后,两个integers都可以设置为 false,这允许您使用switch代替ifif每对图片都需要单独的if语句,则可以大大缩短代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM