首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在c#中单击数组图片框事件

在c#中单击数组图片框事件
EN

Stack Overflow用户
提问于 2014-05-17 14:24:41
回答 3查看 988关注 0票数 1

我正在尝试创建一个包含8个picturebox的事件,这是我的代码,但当我单击它时,总是放入相同的图像,这个事件已经做了两次,我在picturebox的事件上放了一条消息,它出现了两次。

代码语言:javascript
复制
public partial class Form1 : Form
{
    int jug=1;
    PictureBox[] PicBox = new PictureBox[9];    
    Image circu = Image.FromFile("Circulo1.png");
    Image cruz = Image.FromFile("Cruz1.png");
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        PicBox[0] = this.pcb0;
        PicBox[1] = this.pcb1;
        PicBox[2] = this.pcb2;
        PicBox[3] = this.pcb3;
        PicBox[4] = this.pcb4;
        PicBox[5] = this.pcb5;
        PicBox[6] = this.pcb6;
        PicBox[7] = this.pcb7;
        PicBox[8] = this.pcb8;
        for (int i = 0; i < 9; i++)
        {
            PicBox[i].Click += new System.EventHandler(PictureBoxes_Click); 
        }



    }
    private void PictureBoxes_Click(object sender, EventArgs e)
    {

        PictureBox p = (PictureBox)sender;
        if (jug == 1)
        {
            jug = 2;

            p.Image = cruz;

        }
        else
        {
                jug = 1;
                p.Image = circu;


        }

    } 
EN

回答 3

Stack Overflow用户

发布于 2014-05-17 14:40:38

尝试使用内置函数刷新图片框。如果不能解决问题,请将picturebox图像属性设置为null,然后刷新并设置所需图像。

或者您尝试在ide的设计页面上设置单击事件,将其绑定到相同的函数(在本例中为Pictureboxes_click)。

票数 0
EN

Stack Overflow用户

发布于 2014-05-17 15:19:14

没有理由两次输入事件。您的代码实际上是有效的。我想你的窗体中可能还有其他一些使用相同事件的控件。只需确保该事件仅由图片框使用即可。

要做的另一件事是:在事件处设置断点,并查看哪些控件显示为发送者。这将帮助您解决您的问题。

使用图片框的标签属性来了解进入事件的是哪一个:

代码语言:javascript
复制
for (int i = 0; i < 9; i++)
{
    PicBox[i].Tag = i;
}

当代码进入事件时,您可以查看p.Tag以查看是哪一个触发了事件。

票数 0
EN

Stack Overflow用户

发布于 2014-05-20 21:48:31

对于单实例,您只有2个不同的镜像。尝试克隆镜像,以便每个PictureBox都有自己的镜像实例:

代码语言:javascript
复制
private void PictureBoxes_Click(object sender, EventArgs e)
{
   PictureBox p = (PictureBox)sender;
   if (jug == 1)
   {
      jug = 2;
      p.Image = (Image)cruz.Clone();
   }

   else
   {
      jug = 1;
      p.Image = (Image)circu.Clone();
   }
}

或者,您可以使用自动创建新实例的"FromFile"-method,替换克隆:

代码语言:javascript
复制
p.Image = Image.FromFile("Circulo1.png");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23708297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档