Winform中两个listbox的操作是平时比较常用的操作。

本次将以一个Winform实例来分享一下两个listbox的操作,包括:listbox添加项,项的上移下移等操作。

假设有两个listbox:一个叫listBoxCategory,这个listbox是一个包含所有建筑元素项目的项;另一个叫listBoxSelected,这个是将左边的listbox中的项选中并添加到的listbox。

<1>  Resource文件的定义:

<2>  listBox中的每一项定义:

public class CategoryItem
{
public CategoryItem(string categoryName, int categoryId)
{
CategoryName = categoryName;
CategoryId = categoryId;
}
public string CategoryName {get; set;}
public int CategoryId {get; set;}
}

<3>  listBoxCategoery在初始化时,它的每一项都是由doc.Settings.Categories提供,但是不能和listBoxSelected中的初始项冲突;listBoxSelected中的初始项由Existinglist提供

 private void listboxInitialize(Document doc)
{
List<CategoryItem> categoryitems = new List<CategoryItem>();
listBoxCategory.DisplayMember = "CategoryName";
listBoxCategory.ValueMember = "id";
listBoxSelected.DisplayMember = "CategoryName";
listBoxSelected.ValueMember = "id";
foreach (Category cat in doc.Settings.Categories)
{
bool checkreapter = false;
foreach(int defaultlistId in Existinglist)
{
if(cat.Id.IntegerValue==defaultlistId)
{
checkreapter = true; break;
}
}
if(checkreapter == false)
{
listBoxCategory.Items.Add(new CategoryItem(cat.Name, cat.Id.IntegerValue)); //防止和listBoxSelected中的项冲突
}
}
foreach (int defaultlistId in Existinglist)
{
listBoxSelected.Items.Add(new CategoryItem(doc.Settings.Categories.get_Item((BuiltInCategory)defaultlistId).Name, defaultlistId));
}
}

<4>  listBoxSeleted的上移与下移:

private void buttonUp_Click(object sender, EventArgs e)
{
int listboxLength = listBoxSelected.Items.Count;
int selectindex = listBoxSelected.SelectedIndex;
if (listBoxSelected.SelectedItem !=null)
{
if (listboxLength > selectindex && selectindex > )
{
object oTempItem = listBoxSelected.SelectedItem;
listBoxSelected.Items.RemoveAt(selectindex);
listBoxSelected.Items.Insert(selectindex - , oTempItem);
listBoxSelected.SelectedIndex = selectindex - ;
}
}
else
{
MessageBox.Show(Res.StringReminder);
}
} private void buttonDown_Click(object sender, EventArgs e)
{
int listboxLength = listBoxSelected.Items.Count;
int selectindex = listBoxSelected.SelectedIndex;
if (listBoxSelected.SelectedItem !=null)
{
if (listboxLength > selectindex && selectindex < listboxLength - )
{
object oTempItem = listBoxSelected.SelectedItem;
listBoxSelected.Items.RemoveAt(selectindex);
listBoxSelected.Items.Insert(selectindex + , oTempItem);
listBoxSelected.SelectedIndex = selectindex + ;
}
}
else
{
MessageBox.Show(Res.StringReminder);
}
}

<5> listBoxCategory中的项添加到listBoxSelected:

 private void buttonAdd_Click(object sender, EventArgs e)
{
listBoxSelected.DisplayMember = "CategoryName";
listBoxSelected.ValueMember = "id";
bool checklist = false;
if (listBoxCategory.SelectedItem !=null)
{
foreach(object obj in listBoxSelected.Items)
{
if (((CategoryItem)listBoxCategory.SelectedItem).CategoryName == ((CategoryItem)obj).CategoryName)
{
checklist = true;
break;
}
}
if(checklist==true)
{
MessageBox.Show(Res.StringRepeat);
}
else
{
for (int i = listBoxCategory.SelectedItems.Count - ; i >= ; i--)
{
listBoxCategory.SelectedItem = listBoxCategory.SelectedItems[i];
listBoxSelected.Items.Add(listBoxCategory.SelectedItem);
listBoxCategory.Items.Remove(listBoxCategory.SelectedItem);
}
} }
else
{
MessageBox.Show(Res.StringReminder);
}
}

<6> listBoxcategory中的项双击添加到listBoxSelected中:

private void listBoxCategory_DoubleClick(object sender, EventArgs e)
{
buttonAdd.PerformClick();
}

基于ListBox的相关操作的更多相关文章

  1. 【ListBox】ListBox的相关操作

    Winform中两个listbox的操作是平时比较常用的操作. 本次将以一个Winform实例来分享一下两个listbox的操作,包括:listbox添加项,项的上移下移等操作. 假设有两个listb ...

  2. linux下进程相关操作

    一.定义和理解 狭义定义:进程是正在运行的程序的实例. 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动. 进程的概念主要有两点: 第一,进程是一个实体.每一个进程都有它自己的 ...

  3. 从零自学Hadoop(25):Impala相关操作下

    阅读目录 序 导入数据 查询 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 上一 ...

  4. Git知识总览(四) git分支管理之rebase 以及 cherry-pick相关操作

    上篇博客聊了<Git知识总览(三) 分支的创建.删除.切换.合并以及冲突解决>,本篇博客我们主要来看一下 rebase 变基相关的操作.rebase 操作和 merge 操作最终都可以达到 ...

  5. java 的Date 日期相关操作

    String 与 Date互转(1)基于SimpleDateFormat实现: package com.bky.df; import java.text.ParseException; import ...

  6. python三大框架之一flask中cookie和session的相关操作

    状态保持 Cookie cookie 是指某些网站为了 辨别  用户身份,进行会话跟踪而储存在用户本地的数据(通常会经过加密),复数形式是 coolies. cookie是由服务器端生成,发送给客户端 ...

  7. Scala学习(三)----数组相关操作

    数组相关操作 摘要: 本篇主要学习如何在Scala中操作数组.Java和C++程序员通常会选用数组或近似的结构(比如数组列表或向量)来收集一组元素.在Scala中,我们的选择更多,不过现在我们先假定不 ...

  8. Selenium2+python自动化40-cookie相关操作

    前言 虽然cookie相关操作在平常ui自动化中用得少,偶尔也会用到,比如登录有图形验证码,可以通过绕过验证码方式,添加cookie方法登录. 登录后换账号登录时候,也可作为后置条件去删除cookie ...

  9. linux新定时器:timefd及相关操作函数

    timerfd是Linux为用户程序提供的一个定时器接口.这个接口基于文件描述符,通过文件描述符的可读事件进行超时通知,所以能够被用于select/poll的应用场景. 一,相关操作函数 #inclu ...

随机推荐

  1. jQuery自动加载更多程序

    1.1.1 摘要 现在,我们经常使用的微博.微信或其他应用都有异步加载功能,简而言之,就是我们在刷微博或微信时,移动到界面的顶端或低端后程序通过异步的方式进行加载数据,这种方式加快了数据的加载速度,由 ...

  2. redis系列-redis的连接

    Redis 是完全开源免费的,遵守BSD协议,先进的key - value持久化产品.它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list ...

  3. C#并行编程-并发集合

    菜鸟学习并行编程,参考<C#并行编程高级教程.PDF>,如有错误,欢迎指正. 目录 C#并行编程-相关概念 C#并行编程-Parallel C#并行编程-Task C#并行编程-并发集合 ...

  4. iOS中app启动闪退的原因

    这种情况应和所谓的内存不足关系不大,很少有程序会在初始化时载入大量内容导致崩溃,并且这类问题也很容易在开发阶段被发现,所以内存不足造成秒退的可能性低(内存不足退,通常是程序用了一段时间,切换了几个画面 ...

  5. python学习 操作mysql 环境搭建

    MySqlDB官网只支持Python3.4,这里Python3.5使用第三方库PyMysql连接Mysql数据库. 环境: window7.python3.5 下载PyMysql库:https://p ...

  6. 25.按要求编写一个Java应用程序: (1)编写一个矩形类Rect,包含: 两个属性:矩形的宽width;矩形的高height。 两个构造方法: 1.一个带有两个参数的构造方法,用于将width和height属性初化; 2.一个不带参数的构造方法,将矩形初始化为宽和高都为10。 两个方法: 求矩形面积的方法area() 求矩形周长的方法perimeter() (2)通过继承Rect类编写一个具有

    package zhongqiuzuoye; //自己写的方法 public class Rect { public double width; public double height; Rect( ...

  7. python入门学习课程推荐

    最近在学习自动化,学习过程中,越来越发现coding能力的重要性,不会coding,基本不能开展自动化测试(自动化工具只是辅助). 故:痛定思痛,先花2个星期将python基础知识学习后,再进入自动化 ...

  8. 快速入门系列--WCF--05事务

    最近开始WCF相关知识的学习,虽然实际工作中使用公司自己的一套SOA系统,但微软的一套服务架构还是具有很大的参考意义.除了WCF的一些基础使用,相对比较复杂的内容有分布式的事务和通信的安全等,不过基本 ...

  9. Js内存回收

    Javascript的世界中,隐藏了很多内存陷阱,不能得到合理释放的内存会埋下各种隐患,本文旨在以实用角度去解读Js涉及到的内存,且看勇士如何斗恶龙~ javascript 内存 回收 本文可以看做是 ...

  10. Android项目中,在一个数据库里建立多张表

    一,创建一个公共的DBAdapter; 为了在整个程序运行期间调用该公共的数据库,我们定义了一个扩展自Application的CommDB类: 1,创建唯一的数据库: public class Com ...