怎样在listitem 类型中国第一条高铁的位置添加值

c#(winform)中自定义ListItem类方便ComboBox和ListBox添加项完全解决
c#(winform)中自定义ListItem类方便ComboBox和ListBox添加项完全解决
编辑:www.fx114.net
本篇文章主要介绍了"c#(winform)中自定义ListItem类方便ComboBox和ListBox添加项完全解决",主要涉及到c#(winform)中自定义ListItem类方便ComboBox和ListBox添加项完全解决方面的内容,对于c#(winform)中自定义ListItem类方便ComboBox和ListBox添加项完全解决感兴趣的同学可以参考一下。
刚开始用.net 的winform开发,发现好些控件都很难用,可能是不熟悉的原因吧,这不,一个给ComboBox添加项的问题就搞的我很头疼,我要同时给一个项添加名字和值,怎么都没法加,查了查资料,又自己汇总测试了下,终于全部搞定了,现把完整的方案写下。
&&&&&&& 用comboBox的数据绑定的方法很简单,建一个数据源,绑定到ComboBox上,然后指定DisplayMember和 ValueMember就可以了。但是感觉好不灵活哦,如果我要在ComboBox上再添加一项,那怎么办?Web里面有ListItem, winform里面怎么没有了?感觉真是不爽,网上找了个方法,自己添加一个ListItem类,然后add到items里面,感觉还不错,有点象web
里面的用法了,可是问题又来了,添加的第一项怎么变成类名了?不是我给它赋的名字,其他项又都没有问题。于是又查到说,“因为combobox的 Item.ADD(一个任意类型的变量),而显示的时候调用的是这个变量的ToString()方法,如果这个类没有重载ToString(),那么显示的结果就是命名空间&& +&&
类名”,于是加上重载的ToString()方法,好了,至此,我终于可以很方便的来给ComboBox和ListBox添加项了。
首先添加类ListItem:
/// 选择项类,用于ComboBox或者ListBox添加项
public class ListItem
private string id = string.E
private string name = string.E
//可以根据自己的需求继续添加,如:private Int32 m_Index;
&&& public ListItem()&&&
public ListItem(string sid, string sname)
public override string ToString()&&
&& return this.
public string ID
&&& return this.
&&& this.id =
public string Name
&&& return this.
&&& this.name =
然后在程序中使用:
ListItem item = new ListItem(&我是值&, &我是名字&);
this.lbChoiceRoom.Items.Add(item);
this.lbChoiceRoom.DisplayMember = &Name&;
this.lbChoiceRoom.ValueMember = &ID&;
&&&&&&&&&&& for (int i = 0; i & 7; i++)
&&&&&&&&&&& {
&&&&&&&&&&&&&&& ListItem li = new ListItem(); //还可以直接添加ListItem li =
new ListItem(&id&,&name&)
&&& li.ID = i.ToString();
&&&&&&&&&&&&&&& //[li.Index =]
&&&&&&&&&&&&&&& li.Name = i.ToString();
&&&&&&&&&&&&&&& comboBox1.Items.Add(li);
&&&&&&&&&&& }
MessageBox.Show(((ListItem)comboBox3.SelectedItem).ID.ToString());
就可以取values了
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:君,已阅读到文档的结尾了呢~~
011第十一章集合
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
011第十一章集合
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口&&1124 阅读
一、Java集合接口、集合类
Java中实现了程序设计中的传统的数据结构,现在你不需要专门写一套什么链表、队列、字典这种数据结构了,本合集将讲解一下Java的集合类框架,以及他们之间的继承关系。
集合框架一览
Java 集合定义了两种基本的数据结构,
一种是 Collection,表示一组对象的集合
另一种是 Map
Set 是一种 Collection,不过其中没有重复的对象
List 也是一种 Collection,其中的元素按顺序排列(不过可以有重复)
Map和Collection位于同一级别,这就是大家常说的字典.
二、Collection
集合中只能放置对象的引用,不能放置原生数据类型,
我们需要使用原生数据类型的封装类才能加入到集合中
创建几个实例
// 创建几个集合.由于Collection是接口,所以要用它的子类来实例化
Collection&String& c = new HashSet&String&(); // 一个空集
// 稍后会介绍这些实用方法
// 注意,使用时要留意一些细节
Collection&String& d = new ArrayList&String&(20);
Collection&String& e = Collections.singleton(&three&);
Iterator接口
所有实现Collection接口容器类都有一个iterator方法用以返回一个实现iterator接口对象。iterator对象称迭代器,方便对实现对容器内元素的遍历操作。
现在此处讲解最基本的遍历方法,其他具体的方法在具体的子类中应用
Iterator接口方法
boolean hasNext() 判断右边是否有元素
Object next() //返回游标右边的元素,且将游标移动到下一个位置。 jdk1.4以前是Object jdk1.5以后是
泛型E next()取到下一个位置
void remove() 删除游标左边的元素,只可以执行一次。
接口中只有方法的定义,没有方法的实现。
iterator通俗说:统一遍历所有元素的方法。
Iterator对象的remove方法是在迭代器过程中删除元素的唯一的安全方法。Iterator 在执行中进行锁定.
Set&String& staff = new HashSet&String&();
staff.add(&Amy&);
staff.add(&Bob&);
staff.add(&Carl&);
Iterator&String& iterStaff = staff.iterator();
//遍历方法 Iterator
while(iterStaff.hasNext()){
String name =
iterStaff.next();
iterStaff.remove();
System.out.println(name);
System.out.println(Arrays.toString(staff.toArray()));
[Bob, Carl]
它不允许出现重复元素;
不对集合进行排序,也不保证按照插入数据顺序
允许包含值为null的元素,但最多只能有一个null元素。(有第一条规则可知)
按照定义,Set 接口继承 Collection 接口,而且它不允许集合中存在重复项。所有原始方法都是现成的,没有引入新方法。具体的 Set 实现类依赖添加的对象的 equals() 方法来检查等同性。
各个方法的作用描述:
boolean add(E e)添加元素,添加成功返回true, 如果set中不存在指定元素,则向set加入 ;
Set&String& staff = new HashSet&String&();
staff.add(&Amy&); //true
staff.add(&Bob&); //true
System.out.println(staff.add(&Carl&));//true
System.out.println(staff.add(&Carl&));//false
public int size() :返回set中元素的数目,如果set包含的元素数大于Integer.MAX_VALUE,返回Integer.MAX_VALUE;
staff.size();//3
public boolean isEmpty() :如果set中不含元素,返回true ;
Set&String& staff = new HashSet&String&();
System.out.println(staff.isEmpty()); //true
staff.add(&Amy&);
staff.add(&Bob&);
System.out.println(staff.isEmpty()); //false
public boolean contains(Object o) :如果set包含指定元素,返回true ;
staff.contains(&Bob&);//true
staff.contains(&BoB&);//false
public Iterator iterator() : 返回set中元素的迭代器,元素返回没有特定的顺序,除非set提高该保证的某些类的实例 ;
public boolean remove(Object o) :如果set中存在指定元素,则从set中删除 ;
Set&String& staff = new HashSet&String&();
staff.add(&Amy&); //true
staff.add(&Bob&); //true
staff.add(&Carl&);//true
staff.remove(&Amy&);
System.out.println(Arrays.toString(staff.toArray()));
[Carl, Bob]
public boolean removeAll(Collection c) :如果set包含指定集合,则从set中删除指定集合的所有元素
Set staff = new HashSet();
staff.add(&Amy&);
staff.add(&Bob&);
staff.add(&Carl&);
Set&String& staff1 = new HashSet&String&();
staff1.add(&Bob&);
staff1.add(&Carl&);
staff1.add(&c&);
//删除之前
System.out.println(Arrays.toString(staff.toArray()));
//除去staff 和 staff1 公共的集合
staff.removeAll(staff1);
//删除之后
System.out.println(Arrays.toString(staff.toArray()));
[Amy, Carl, Bob]
public void clear() :从set中删除所有元素;
遍历方法:
Set&String& staff = new HashSet&String&();
staff.add(&Amy&);
staff.add(&Bob&);
staff.add(&Carl&);
Iterator&String& iterStaff = staff.iterator();
//遍历方法1
while(iterStaff.hasNext()){
String name =
iterStaff.next();
System.out.println(name);
另外一种增强型的for循环
for(String name : staff){
System.out.println(name);
仅仅查看元素的话:
System.out.println(Arrays.toString(staff.toArray()));
List 链表主要包括 ArrayList 和 LinkedList 以及 Vector,允许链表元素重复
1、ArrayList
如果没有频繁的删除插入操作,又不用考虑多线程问题,优先选择ArrayList,主要用于查询,
a.基本方法
//声明方式
List&String& staff = new ArrayList&&();
添加数据 boolean add(E e) ,数据改变的话则返回true
boolean flag =
flag = staff.add(&Amy&); //true
flag = staff.add(&Bob&); //true
flag = staff.add(&Carl&);//true
对具体位置进行添加 void add(int index, E e) 无返回值
staff.add(0,&2&);
System.out.println(staff.get(0));
根据索引获得数据get方法, E get(int index), 返回值类型就是声明时候的泛型类型
String name = staff.get(0);//Amy
数组与List相互转换的方法,public
T[] toArray(T[] a)   a 是要存储列表元素的数组,如果它足够大的话;否则,它是一个为存储列表元素而分配的、具有相同运行时类型的新数组。另外也有Object[] toArray();方法,但是对于它来说,得到的数据要强转成对应的类型.
//第一种方法
String[] names = staff.toArray(new String[]{});
System.out.println(Arrays.toString(names));
//第二种方法
String[] names = (String[]) staff.toArray();
对于数组转化成List, 调用Arrays的asList方法, List asList(T... a)
List&String& staff = new ArrayList&&();
String[] names = {&Amy,Bob,Carl&};
//&T& List&T& asList(T... a)
//staff = Arrays.asList(names);
//也可以staff = Arrays.asList(&Amy&,&Bob&,&Carl&);
set()方法,E set(int index, E element),根据索引位置,对数据进行改变,返回原来位置的元素
String name = staff.set(0,&AAAAA&);
System.out.println(&name : &+name);//name : Amy
set主要用于对数据进行交换,比如:
System.out.println(Arrays.toString(staff.toArray()));
staff.set(1,staff.set(0,staff.get(1)));
System.out.println(Arrays.toString(staff.toArray()));
[Amy, Bob, Carl]
[Bob, Amy, Carl]
remove() 方法, E remove(int index),根据索引删除特定的值,并且返回删除的值
String name = staff.remove(2);
addAll(list)方法,在原来的链表最后面追加链表 boolean addAll(Collection&? extends E& c);
List&String& company = new ArrayList&&();
company.add(&12&);
company.addAll(staff);//[12, Amy, Bob, Carl]
addAll(index,list)在index处插入一个链表,boolean addAll(int index, Collection&? extends E& c)
List&String& company = new ArrayList&&();
company.add(&12&);
company.addAll(1,staff);
company.add(&23&);//[12, Amy, Bob, Carl, 23]
b.遍历方法
List&String& staff = new ArrayList&&();
staff.add(&Amy&);
staff.add(&Bob&);
staff.add(&Carl&);
Iterator&String& iterStaff = staff.iterator();
//遍历方法 Iterator
while(iterStaff.hasNext()){
String name =
iterStaff.next();
System.out.println(name);
//在Java1.5后 可以使用 for each 循环
for (String name : staff){
System.out.println(name);
//如果需要list的索引号,则使用普通的循环即可
int len = staff.size();
for (int i = 0; i & i++){
System.out.println(&第 &+i+ &个员工的名字是:&+staff.get(i));
//单纯的想看看staff的元素的话,可以简单粗暴的
System.out.println(Arrays.toString(staff.toArray(new String[]{})));
对于 HashMap 而言,系统 key-value 当成一个整体进行处理,系统总是根据 Hash 算法来计算 key-value 的存储位置,这样可以保证能快速存、取 Map 的 key-value 对。
HashMap 无序
实例化,put(),返回 原来的key对应的value,如果原来不存在这个key 则返回null
HashMap&String , Double& classMap = new HashMap&String , Double&();
Double d =
classMap.put(&语文&, 80.0);
classMap.put(&数学&, 89.0);
classMap.put(&英语&, 78.2);
System.out.println(d);
classMap.put(&语文&, 60.0);
System.out.println(d);
get()方法, V get(Object key) 通过 key值 获得value,若果key不存在,返回null
classMap.get(&语文&);//60.0
classMap.get(&思想品德&);//null
为了防止空指针异常:可以用containsKey,方法判断是否存在key,boolean containsKey(Object key)
classMap.containsKey(&思想品德&);//false
isEmpty()判断Map是否为空,空则 返回true,非空 返回 false
classMap.isEmpty();//false
HashMap&String , Double& classMap2 = new HashMap&String , Double&();
classMap2.isEmpty();//
size() 返回Map的长度,
classMap.size();
第一种:效率较低
Set&String& keys = classMap.keySet();
for (String key : keys){
System.out.println(key+&:&+classMap.get(key));
第二种效率高:
//classMap.entrySet();
for (Map.Entry entry : classMap.entrySet()){
System.out.println(entry.getKey()+&:&+entry.getValue());
具体参见文章:

我要回帖

更多关于 宪法第一条 的文章

 

随机推荐