首页 > 解决方案 > 来自鼠标单击事件的多个正确 If 语句

问题描述

我正在尝试做废物收集计划,这些是代码的一部分。我的问题是,如果图片框在第二个 if 语句(杂志)上显示图像,则没有问题。但是如果在第一个 if 语句(报纸)和 if NewWaste(); 上显示第一个图像 给杂志然后有问题。因为它将它们都添加到列表框中,但我在图片框上看不到第二张图像。我该如何解决?

private void NewWaste()
        {
            Image[] images = new Image[] { newspaper.Image, magazine.Image, glass.Image };
            int wastes = rnd.Next(images.Length);
            wastePictureBox.Image = images[wastes];
    }
            //(part of class)
            public bool Add(Waste waste)
            {
                if (FilledVolume + waste.Volume <= Capacity)
                    return true;
                else
                    return false;
            }

private void addPaperWasteBtn_Click(object sender, EventArgs e)
        {
            if (paperWasteBox.Add(newspaper) == true && wastePictureBox.Image == newspaper.Image)
            {
                paperWasteListBox.Items.Add("Newspaper");
                NewWasteImage();
            }
            if (paperWasteBox.Add(magazine) == true && wastePictureBox.Image == magazine.Image)
            {
                paperAtikListBox.Items.Add("Magazine");
                NewWasteImage();
            }
        }

标签: c#winforms

解决方案


如果您只希望第二个if语句在第一个语句没有运行的情况下运行,那么您需要else if在第二个条件检查之前执行一个语句。

改变:

        if (paperWasteBox.Add(newspaper) == true && wastePictureBox.Image == newspaper.Image)
        {
            paperWasteListBox.Items.Add("Newspaper");
            NewWasteImage();
        }
        if (paperWasteBox.Add(magazine) == true && wastePictureBox.Image == magazine.Image)
        {
            paperAtikListBox.Items.Add("Magazine");
            NewWasteImage();
        }

至:

        if (paperWasteBox.Add(newspaper) == true && wastePictureBox.Image == newspaper.Image)
        {
            paperWasteListBox.Items.Add("Newspaper");
            NewWasteImage();
        }
        else if (paperWasteBox.Add(magazine) == true && wastePictureBox.Image == magazine.Image)
        {
            paperAtikListBox.Items.Add("Magazine");
            NewWasteImage();
        }

注意第六行的区别!


推荐阅读