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();
}

最新文章

  1. nyoj1007(euler 函数)
  2. C#枚举描述获取
  3. ASP.NET MVC验证标注的扩展-checkbox必选
  4. 【BZOJ 1507】【NOI 2003】&amp;【Tyvj P2388】Editor 块状链表模板题
  5. Nginx基础知识之————Nginx 环境的搭建?
  6. Beginners Guide To Learn Dimension Reduction Techniques
  7. Creating a CSRF protection with Spring 3.x--reference
  8. Android_AsyncTask_Method
  9. 选择结构if语句和switch语句的区别
  10. 捕获ClientDataSet.ApplyUpdates和SocketConnection异常
  11. PHP 单链表
  12. java线程(四)
  13. Python内置函数进制转换的用法
  14. 表连接查询(2-n)
  15. XML属性列表
  16. UOJ#77. A+B Problem [可持久化线段树优化建边 最小割]
  17. jdbcTemplate的queryForList
  18. shell反射
  19. silverlight属性改变事件通知
  20. 阿里云redis映射到阿里云服务器

热门文章

  1. python-全栈开发-前方高能-内置函数
  2. ffmpeg 踩坑实录 近期使用总结(三)
  3. linux系统CPU内存磁盘监控发送邮件脚本
  4. 利用工厂模式实现serviec层和dao层解耦
  5. HTML从入门到放弃
  6. 2019CSUST集训队选拔赛题解(一)
  7. 软银集团和共享办公空间公司WeWork在日本成立合资公司
  8. presto 配置mysql.properties异常Database (catalog) must not be specified in JDBC URL for MySQL connector
  9. unknown2
  10. 2018-2019-20172321 《Java软件结构与数据结构》第四周学习总结