【问题标题】:More than one condition in C# [closed]C#中的多个条件[关闭]
【发布时间】:2020-11-08 06:51:07
【问题描述】:

我在 C# 中遇到问题,我的代码必须检测到每个 pictureBox 都有相同的图像,然后执行一个处理。但是我的代码运行不正常。 我正在使用 .Net Framework 4.8 和 WinForms。

事件:Button1_Click

代码:

            string Location = Application.StartupPath.ToString();
            if (pictureBox1.BackgroundImage == Properties.Resources.tick &&
                pictureBox2.BackgroundImage == Properties.Resources.tick &&
                pictureBox3.BackgroundImage == Properties.Resources.tick &&
                pictureBox4.BackgroundImage == Properties.Resources.tick &&
                pictureBox5.BackgroundImage == Properties.Resources.tick)
            {
                if (File.Exists(Location + "\\files\\e.etf"))
                {
                    File.Delete(Location + "\\files\\e.etf");
                }
                if (File.Exists(Location + "\\files\\n.etf"))
                {
                    File.Delete(Location + "\\files\\n.etf");
                }
                if (File.Exists(Location + "\\files\\p.etf"))
                {
                    File.Delete(Location + "\\files\\p.etf");
                }

            }
            else
            {
                MessageBox.Show("Error");
            }

但是每当我点击按钮n它总是显示MessageBox显示“错误”。请帮助我。 提前谢谢你。 ????

【问题讨论】:

  • Resources 是一家工厂。它每次都会创建一个新对象,因此 a) 小 sn-p 正在创建许多从未处理过的图像 b) 新创建的对象永远不会等于旧对象。将图像缓存在一个变量(或数组,如果有很多)中并从那里进行比较和分配
  • 但这并不重要,但是:使用&& for logical AND。它是用于此用途的操作员,并且正在短路。应谨慎使用“bool & bool”,例如在必须计算所有表达式时或在其他高度专业化的代码中。
  • @user2864740 我用过 && 但它也不起作用。 ??????????
  • 我正在处理 pictureBox BackgroundImage 但创建一个新的。但问题仍然存在。
  • 您不能这样做pictureBox1.BackgroundImage == Properties.Resources.tick 有几个原因。一是 Image 或 BackgroundImage 无法与任何其他位图进行比较。相反,您应该在加载这些图像时存储名称或 ID! - (它们是引用变量,它们总是有不同的引用/地址)

标签: c# if-statement conditional-statements


【解决方案1】:

请记住,不能以这种方式比较图像。

您可以为每个图片框传递一些变量,例如 bool,并在图片框获取刻度图像时将其设置为 true。

然后将您的 if 条件更改为比较所有布尔值是否为真。

你准备好了!

请记住,这是最简单的方法。也可以有其他方法!

【讨论】:

  • 存储标志或名称等信息的常用方法是每个控件具有的 Tag 属性。
  • @TaW:是的。但是,这对新手来说更容易。
  • 这个 ???什么是?你没有显示任何代码,只是写了 你可以传递一些变量 不太清楚。
  • @TaW;为自定义需求编写任何代码都非常困难。我不知道他的代码,我对他的项目了解不多。我能做的就是提供一些想法。但是,我仍然会尝试创建一个方法并将其添加到答案中。
  • 实际上几乎不可能编写代码,甚至无法正确回答正在更改的问题。它的最新版本甚至比第一个版本还要低。- Imo 提供的综合建议是它应得的..
猜你喜欢
  • 2013-09-19
  • 2023-03-10
  • 1970-01-01
  • 2020-06-27
  • 2021-03-04
  • 2014-06-18
  • 1970-01-01
  • 2017-04-13
  • 2011-09-10
相关资源
最近更新 更多