关于winform中一点问题求教

问题描述

要怎么才能让重复的只累计数量和价钱,不重复添加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();不要,忘记删掉了
解决方案:
问了一个面向过程的思维问题,得到一个面向对象的回答,肯定晕菜!

时间: 2024-11-08 19:31:35

关于winform中一点问题求教的相关文章

文本框-c# winform中如何控制焦点。新人求教。

问题描述 c# winform中如何控制焦点.新人求教. 如何实现光标在文本框的,数据库的表格在按上下键时可以移动.就是下面这种情况. 解决方案 private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == Keys.Down) { this.dataGridView1.Rows[this.dataGridView1.CurrentRow.Index + 1 > this.dataGridView1

求教如何将winform中展开的TreeView转换为JPG图片

问题描述 求教如何将winform中展开的TreeView转换为JPG图片,展开后的TreeView的高度要比窗口的高度高,会有滚动条,可不可以直接将Treeeview中的内容全部转换成JPG图片,不要有滚动条,谢谢 解决方案 解决方案二:很明确的告诉你,没有这样的方法.但是你可以根据树形结构自己画一张解决方案三:同1楼.自己画.

c#-C#与Matlab混编,如何把matlab的图嵌入到winform中?求代码......

问题描述 C#与Matlab混编,如何把matlab的图嵌入到winform中?求代码...... C#与Matlab混编,如何把matlab的图嵌入到winform中.网上搜到的资料需要Windows API的基础无奈一点都不懂,求高手 解决方案 xaml于c#代码混编VC和Matlab混编第二课Matlab与vc混编

WinForm中DataGridView折叠控件【超好看】_实用技巧

刚到一家新公司,领导下发任务要用cs系统做一个表格折叠显示,这真是把我难倒了,自己工作6年一直以来都是做BS的系统.这如果在BS里面那太简单了,JqGrid默认都自带,可是DataGridview不支持折叠啊.自己一点经验没有,怎么办呢?于是上网搜了相关视频,资料,开始学习起来.最后借鉴源码封了这么一个东西,发出来分享下,也能让自己加深印象. 首先不多说,上图.如果大家感谢还不错,请继续往下阅读: 大概的效果就是这样. 上代码. 1.首先重写DataGridview,代码如下: public c

在C# winform中如何获取 datagrid的checkbox列的选中事件

问题描述 在C#winform中如何获取datagrid的checkbox列的选中事件.先谢谢了! 解决方案 解决方案二:如果使用DataGridView,俺的方法是捕获CellContentClick事件解决方案三:能否说的再详细一点吗?谢谢了

WinForm中类似WebForm中的CheckBoxList控件

web|控件 前些天,在.Net技术的论坛里面看到了有个帖子,我好像记得是怎么实现WinForm中类似WebForm中的CheckBoxList控件,我简单的实现了那样的一个控件 首先,你得建立一个控件项目,假如说是: 接着,你就添加一个类:CheckBoxCollection,它是个CheckBox的集合类 具体的代码如下 CheckBoxCollection.cs using System;using System.Collections;using System.Windows.Forms

如何在C#的WinForm中制作饼状图和柱状图

饼状图|柱状图 当我们的软件需要各种饼状图和柱状图来表示数据时,我们或许会想到用Offices中的图形控件或是第三方控件,但现在的第三方控件大都需要注册,有些免费的控件会有开发商的标记等.而对于使用Offices的图形控件来说,并不能在程序中得于很好控制,其使用的简易程度也较低,所以在这我给出在C#中使用GDI+实现饼状图和柱状图跟数据库联接显示数据的方法.  using System;  using System.IO;//用于文件存取  using System.Data;//用于数据访问 

WinForm中的特殊窗体效果:渐变窗口和信息提示窗口

在WinForm中偶尔会遇到某些特殊效果:比如某个窗口刚开始的时候是完全透明的,随着时间的变化 ,窗体逐渐不透明,直至完全不透明.这是本文要探讨的窗体效果之一:渐变窗体. 还有一种窗 体效果:有些软件在某个特定的时间会显示一个提示窗体,这个窗体不是直接显示的,而是慢慢从窗口 的最下方向上移动,直至窗体完全显示就不再移动.当我们点击"确定"按钮之后,窗体由 从屏幕上逐渐下移,直至完全从屏幕上完全不显示.这也是本文讨论的窗体效果之一:移动提示信息窗 口. (一)渐变窗体 每个窗体都有一个O

浅谈.NET下的多线程和并行计算(九)Winform中多线程编程基础 下

在之前的文章中我们介绍过两种Timer和BackgroundWorker组件,在上文中我们提到过,强烈建议在UI 线程上操作控件,否则很容易产生人品问题.可以想到,上次介绍的两个Timer基于ThreadPool,回调方 法运行于不同于UI线程的新线程上,在这个方法中操作控件需要进行 Invoke或BeginInvoke.其实,还有 第三种System.Windows.Forms.Timer,它可以让回调事件在UI线程上执行,我们来做一个实验比较一下 System.Windows.Forms.T