You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按钮图片与背景色匹配逻辑异常修复需求

解决按钮图片与背景色匹配的问题

我看了你的代码,问题出在点击事件里完全用随机数决定背景色,根本没关联按钮上的图片。咱们需要先把每个按钮对应的图片编号存起来,点击时根据这个编号来设置对应的背景色。

具体修改步骤:

  1. 创建一个包含位置和图片ID的类:用来替代原来的Place类,把按钮的位置和图片编号一起存在Tag里
  2. 创建按钮时存储图片ID:生成按钮图片时,把图片编号和位置信息一起赋值给按钮的Tag
  3. 修改点击事件逻辑:根据存储的图片ID判断是汉堡图还是其他图,设置对应的背景色,去掉随机数逻辑

修改后的代码片段:

首先,替换原来的Place类为这个包含图片ID的类:

class ButtonData
{
    public int Row { get; set; }
    public int Column { get; set; }
    public int ImageId { get; set; }
}

然后,修改按钮创建的双层循环代码:

for (int i = 0; i < arr.GetLength(0); i++) 
{ 
    cx = x; 
    for (int j = 0; j < arr.GetLength(1); j++) 
    { 
        value = rnd.Next(0, 2); 
        t = new Button(); 
        // 存储位置和图片ID到按钮的Tag属性中
        int imgId;
        if (value == 0) 
            imgId = rnd.Next(1, 2); // 汉堡图对应ID为1
        else 
            imgId = rnd.Next(2, 6); // 其他图对应ID为2-6
        t.Tag = new ButtonData { Row = i, Column = j, ImageId = imgId };
        
        t.BackColor = Color.Red; 
        t.BackgroundImageLayout = ImageLayout.Stretch; 
        t.BackgroundImage = Image.FromFile("..\\..\\Pictures\\" + imgId + ".png"); 
        t.Bounds = new Rectangle(cx, y, w, h); 
        t.Click += new System.EventHandler(this.qqq_Click); 
        this.Controls.Add(t); 
        arr[i, j] = t; 
        cx += w; 
    } 
    y += h; 
}

最后,修改点击事件的逻辑:

private void qqq_Click(object sender, EventArgs e) 
{ 
    Button clickedBtn = (Button)sender;
    ButtonData btnData = (ButtonData)clickedBtn.Tag;
    int px = btnData.Row;
    int py = btnData.Column;
    int imgId = btnData.ImageId;

    // 根据图片ID设置对应背景色,移除随机数逻辑
    if (imgId == 1) 
    {
        mishvalue = 1;
        arr[px, py].BackColor = Color.Blue;
    }
    else 
    {
        mishvalue = 0;
        arr[px, py].BackColor = Color.Green;
    }
    arr[px, py].Enabled = false;
    clickedBtn.Text = " "; 
    scanner(); 
}

为什么原来的代码不对?

原来的qqq_Click方法里用rndmcus = rnd.Next(0, 2)随机生成0或1,完全不管按钮上的是汉堡图还是其他图,所以每次点击颜色都是随机的。现在我们把图片ID存在按钮的Tag里,点击时直接读取这个ID来判断,就能实现你要的效果:汉堡图按钮点击后变蓝,其他图片按钮点击后变绿。

内容的提问来源于stack exchange,提问作者Adar Itzhak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:13:43