c# - 防止对象类作为项目重复输入到列表框
问题描述
我正在尝试将对象类中的项目添加到列表框中,并检查该项目是否已存在于列表框中。如果是这样,那么我只需删除当前项目并将其替换为当前对象(这只会增加数量和价格),但由于某种原因,if 语句始终为真,如,我正在检查项目名称是否已经存在并且是总是想出它不是(即使它是)。
下面是我的尝试:
private void AddListItem(OrderItem item)
{
if (!lstOrderPad.Items.Contains(item.Name))
{
lstOrderPad.Items.Add(string.Format("{0,-5}{1,-15}{2,-10}",
item.Quantity, item.Name, item.ItemPrice));
}
else
{
int index = lstOrderPad.Items.IndexOf(item);
lstOrderPad.Items.RemoveAt(index);
lstOrderPad.Items.Add(string.Format("{0,-5}{1,-15}{2,-10}",
item.Quantity, item.Name, item.ItemPrice));
}
}
解决方案
这是因为您要向列表添加格式化字符串,但仅与Name
属性进行比较。
您正在将以下字符串添加到 List
string.Format("{0,-5}{1,-15}{2,-10}", item.Quantity, item.Name, item.ItemPrice)
但与
if (lstOrderPad.Items.Contains(item.Name))
您应该改为以下
var itemFormat = string.Format("{0,-5}{1,-15}{2,-10}", item.Quantity, item.Name, item.ItemPrice);
if (!lstOrderPad.Items.Contains(itemFormat))
{
lstOrderPad.Items.Add(itemFormat);
}
推荐阅读
- reactjs - 运行 npx create-react-app appname 时,VScode 终端直接在驱动器上创建 react app 文件夹,而不是命令文件夹
- python - 如果蜘蛛错误处理继续执行脚本
- c# - 如何从网站获取文件名列表
- go - 如何在 3 秒内打印出这个 Go 代码?
- javascript - TypeScript:无法调用可能是“未定义”的对象
- javascript - 保存 Tensorflow.js 张量的先前值
- r-markdown - 如何在 rmarkdown 中控制具有大块文本的 flextable 对象的大小
- arrays - 快速从对象数组中清除不同值的方法
- discord.js - 如何在启动时显示不和谐机器人服务器计数?
- python - 如何在没有外部递归函数的情况下解析多个嵌套的 JSON 键?