问题描述
要怎么才能让重复的只累计数量和价钱,不重复添加usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespaceHomeWork{publicpartialclassShoppingForm:Form{publicShoppingForm(){InitializeComponent();}doublenum=1,num1;privatevoidlistBox1_DoubleClick(objectsender,EventArgse){if(listBox2.Items.Contains(listBox1.Text+"-"+num+"-¥"+num*num1)==false){if(listBox1.SelectedIndex==0||listBox1.SelectedIndex==1)num1=2.5;elseif(listBox1.SelectedIndex==2)num1=3.5;elseif(listBox1.SelectedIndex==3)num1=4.6;elseif(listBox1.SelectedIndex==4)num1=3.1;listBox2.Items.Add(listBox1.Text+"-"+num+"-¥"+num*num1);num++;}}privatevoidShoppingForm_Load(objectsender,EventArgse){listBox1.Items.Add("大白菜-2.5");listBox1.Items.Add("小白菜-2.5");listBox1.Items.Add("大菠菜-3.5");listBox1.Items.Add("小菠菜-4.6");listBox1.Items.Add("嫩白菜-3.1");}}}
解决方案
解决方案二:
你可以定义这样一个类classbuythings{stringselectName;intselectNum;floatselectTotalPrice;stringdisplayInfo;}申明一个buythings类的list,每次双击时到list里查找,存在则更新list信息,不存在则list中添加信息,然后绑定到listbox2上
解决方案三:
if(listBox2.Items.Contains(listBox1.Text+"-"+num+"-¥"+num*num1)==false){}这句判断有问题吧if(listBox2.Items.Contains(listBox1.SelectedItem.ToString())){数量+1;价钱+N;}
解决方案四:
引用2楼u011130289的回复:
if(listBox2.Items.Contains(listBox1.Text+"-"+num+"-¥"+num*num1)==false){}这句判断有问题吧if(listBox2.Items.Contains(listBox1.SelectedItem.ToString())){数量+1;价钱+N;}
我知道我代码是错的,所以来问你们
解决方案五:
引用3楼u011595891的回复:
Quote: 引用2楼u011130289的回复:
if(listBox2.Items.Contains(listBox1.Text+"-"+num+"-¥"+num*num1)==false){}这句判断有问题吧if(listBox2.Items.Contains(listBox1.SelectedItem.ToString())){数量+1;价钱+N;}我知道我代码是错的,所以来问你们
试下我上面的判断
解决方案六:
引用1楼llxaphy1314的回复:
你可以定义这样一个类classbuythings{stringselectName;intselectNum;floatselectTotalPrice;stringdisplayInfo;}申明一个buythings类的list,每次双击时到list里查找,存在则更新list信息,不存在则list中添加信息,然后绑定到listbox2上
不懂
解决方案七:
引用4楼u011130289的回复:
Quote: 引用3楼u011595891的回复:
Quote: 引用2楼u011130289的回复:
if(listBox2.Items.Contains(listBox1.Text+"-"+num+"-¥"+num*num1)==false){}这句判断有问题吧if(listBox2.Items.Contains(listBox1.SelectedItem.ToString())){数量+1;价钱+N;}我知道我代码是错的,所以来问你们
试下我上面的判断
不行啊,你可以试给我看看吗
解决方案八:
引用6楼u011595891的回复:
Quote: 引用4楼u011130289的回复:
Quote: 引用3楼u011595891的回复:
Quote: 引用2楼u011130289的回复:
if(listBox2.Items.Contains(listBox1.Text+"-"+num+"-¥"+num*num1)==false){}这句判断有问题吧if(listBox2.Items.Contains(listBox1.SelectedItem.ToString())){数量+1;价钱+N;}我知道我代码是错的,所以来问你们
试下我上面的判断
不行啊,你可以试给我看看吗
不行什么错误你倒是贴上来看看
解决方案九:
引用7楼u011130289的回复:
Quote: 引用6楼u011595891的回复:
Quote: 引用4楼u011130289的回复:
Quote: 引用3楼u011595891的回复:
Quote: 引用2楼u011130289的回复:
if(listBox2.Items.Contains(listBox1.Text+"-"+num+"-¥"+num*num1)==false){}这句判断有问题吧if(listBox2.Items.Contains(listBox1.SelectedItem.ToString())){数量+1;价钱+N;}我知道我代码是错的,所以来问你们
试下我上面的判断
不行啊,你可以试给我看看吗
不行什么错误你倒是贴上来看看
我就是把那个if改成你那样的而已
解决方案十:
引用8楼u011595891的回复:
Quote: 引用7楼u011130289的回复:
Quote: 引用6楼u011595891的回复:
Quote: 引用4楼u011130289的回复:
Quote: 引用3楼u011595891的回复:
Quote: 引用2楼u011130289的回复:
if(listBox2.Items.Contains(listBox1.Text+"-"+num+"-¥"+num*num1)==false){}这句判断有问题吧if(listBox2.Items.Contains(listBox1.SelectedItem.ToString())){数量+1;价钱+N;}我知道我代码是错的,所以来问你们
试下我上面的判断
不行啊,你可以试给我看看吗
不行什么错误你倒是贴上来看看
我就是把那个if改成你那样的而已
那你把你的错误贴上来看看,把你的绑定数据代码放上来看下
解决方案十一:
引用9楼u011130289的回复:
Quote: 引用8楼u011595891的回复:
Quote: 引用7楼u011130289的回复:
Quote: 引用6楼u011595891的回复:
Quote: 引用4楼u011130289的回复:
Quote: 引用3楼u011595891的回复:
Quote: 引用2楼u011130289的回复:
if(listBox2.Items.Contains(listBox1.Text+"-"+num+"-¥"+num*num1)==false){}这句判断有问题吧if(listBox2.Items.Contains(listBox1.SelectedItem.ToString())){数量+1;价钱+N;}我知道我代码是错的,所以来问你们
试下我上面的判断
不行啊,你可以试给我看看吗
不行什么错误你倒是贴上来看看
我就是把那个if改成你那样的而已
那你把你的错误贴上来看看,把你的绑定数据代码放上来看下
贴上去就是我的全部代码啊
解决方案十二:
引用10楼u011595891的回复:
Quote: 引用9楼u011130289的回复:
Quote: 引用8楼u011595891的回复:
Quote: 引用7楼u011130289的回复:
Quote: 引用6楼u011595891的回复:
Quote: 引用4楼u011130289的回复:
Quote: 引用3楼u011595891的回复:
Quote: 引用2楼u011130289的回复:
if(listBox2.Items.Contains(listBox1.Text+"-"+num+"-¥"+num*num1)==false){}这句判断有问题吧if(listBox2.Items.Contains(listBox1.SelectedItem.ToString())){数量+1;价钱+N;}我知道我代码是错的,所以来问你们
试下我上面的判断
不行啊,你可以试给我看看吗
不行什么错误你倒是贴上来看看
我就是把那个if改成你那样的而已
那你把你的错误贴上来看看,把你的绑定数据代码放上来看下
贴上去就是我的全部代码啊
开玩笑吧,上面就是你全部的代码了?那样肯定是不行的,你还是用2个类来分别封装你2个listbox的信息,在通过点击事件更新绑定的数据吧,就你上面的,即使让你通过自己生成的数据再显示在listbox上也肯定会出问题的
解决方案十三:
引用11楼u011130289的回复:
Quote: 引用10楼u011595891的回复:
Quote: 引用9楼u011130289的回复:
Quote: 引用8楼u011595891的回复:
Quote: 引用7楼u011130289的回复:
Quote: 引用6楼u011595891的回复:
Quote: 引用4楼u011130289的回复:
Quote: 引用3楼u011595891的回复:
Quote: 引用2楼u011130289的回复:
if(listBox2.Items.Contains(listBox1.Text+"-"+num+"-¥"+num*num1)==false){}这句判断有问题吧if(listBox2.Items.Contains(listBox1.SelectedItem.ToString())){数量+1;价钱+N;}我知道我代码是错的,所以来问你们
试下我上面的判断
不行啊,你可以试给我看看吗
不行什么错误你倒是贴上来看看
我就是把那个if改成你那样的而已
那你把你的错误贴上来看看,把你的绑定数据代码放上来看下
贴上去就是我的全部代码啊
开玩笑吧,上面就是你全部的代码了?那样肯定是不行的,你还是用2个类来分别封装你2个listbox的信息,在通过点击事件更新绑定的数据吧,就你上面的,即使让你通过自己生成的数据再显示在listbox上也肯定会出问题的
这样啊,新手刚学到,我再琢磨琢磨
解决方案十四:
用的1楼的想法,给你写的代码,就写了2个usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespaceVSTEST{publicpartialclassForm1:Form{classBuy{publicstringname;publicintnum;publicdoubleprice;publicstringinfo;publicBuy(stringn,doublep){num=0;name=n;price=p;info=name+"-"+p;}publicstringDisplayinfo(){strings=info+"-"+num+"-¥"+num*price;returns;}}Dictionary<int,Buy>list=newDictionary<int,Buy>();publicForm1(){InitializeComponent();}privatevoidForm1_Load(objectsender,EventArgse){Buybuy1=newBuy("大白菜",2.5);list.Add(0,buy1);Buybuy2=newBuy("大菠菜",3.5);list.Add(1,buy2);listBox1.Items.Add(buy1.info);listBox1.Items.Add(buy2.info);}privatevoidlistBox1_DoubleClick(objectsender,EventArgse){intindex=listBox1.SelectedIndex;if(index!=-1){Buybuy=list[index];buy.num++;strings=buy.Displayinfo();list.Remove(index);list.Add(index,buy);listBox2.Items.Clear();foreach(KeyValuePair<int,Buy>linlist){if(l.Value.num!=0){listBox2.Items.Add(l.Value.Displayinfo());}}}}}}
解决方案十五:
listBox1_DoubleClick里的strings=buy.Displayinfo();不要,忘记删掉了
解决方案:
问了一个面向过程的思维问题,得到一个面向对象的回答,肯定晕菜!