按钮.分辨率的比较

本文关键字:比较 分辨率 按钮 | 更新日期: 2023-09-27 18:07:02

我试图在if语句中比较按钮的背景图像,最好是Properties.Resourse.image,但如果需要,我可以比较两个按钮的背景图像。最终目标是查看按钮是否有一个灰色的背景图像,如果有,我有一个图像,我想改变它。到目前为止,我试过的所有方法都不起作用。

第一次尝试

public Form1()
{
    InitializeComponent();
    foreach (var c in this.Controls)
    {
        var btn = c as Button;
        if (btn != null) btn.BackgroundImage = Properties.Resources.Grey;
    }
 }
private void btnPlay1_Click(object sender, EventArgs e)
{
    if (btn00.BackgroundImage == Properties.Resources.Grey)
    {
        MessageBox.Show("Is a valid move");
    }
 }

这不起作用,所以在做了一些研究之后,我发现了.Equals()函数,所以我尝试了

if (btn00.BackgroundImage.Equals(Properties.Resources.Grey))
{
    MessageBox.Show("Is a valid move");
}

这不起作用,所以我试着看看它是否与其他按钮一起工作

if (btn00.BackgroundImage.Equals(btn01.BackgroundImage))
{
    MessageBox.Show("Is a valid move");
}

然而,它只在与自身比较时起作用

if (btn00.BackgroundImage.Equals(btn00.BackgroundImage))
{
    MessageBox.Show("Is a valid move");
}

我也试过做一个简单的变量和比较按钮。

按钮.分辨率的比较

问题是使用Properties.Resources每次都会创建一个新对象,所以即使Properties.Resources.Grey == Properties.Resources.Grey也会是false。您应该做的是每个ImageProperties.Resources一次,并将结果分配给一个字段,然后重复使用该字段。这样,将只有一个Image对象,比较将按预期工作。