【ListBox】ListBox的相关操作
2024-08-25 09:31:30
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();
}
最新文章
- nyoj1007(euler 函数)
- C#枚举描述获取
- ASP.NET MVC验证标注的扩展-checkbox必选
- 【BZOJ 1507】【NOI 2003】&;【Tyvj P2388】Editor 块状链表模板题
- Nginx基础知识之————Nginx 环境的搭建?
- Beginners Guide To Learn Dimension Reduction Techniques
- Creating a CSRF protection with Spring 3.x--reference
- Android_AsyncTask_Method
- 选择结构if语句和switch语句的区别
- 捕获ClientDataSet.ApplyUpdates和SocketConnection异常
- PHP 单链表
- java线程(四)
- Python内置函数进制转换的用法
- 表连接查询(2-n)
- XML属性列表
- UOJ#77. A+B Problem [可持久化线段树优化建边 最小割]
- jdbcTemplate的queryForList
- shell反射
- silverlight属性改变事件通知
- 阿里云redis映射到阿里云服务器
热门文章
- python-全栈开发-前方高能-内置函数
- ffmpeg 踩坑实录 近期使用总结(三)
- linux系统CPU内存磁盘监控发送邮件脚本
- 利用工厂模式实现serviec层和dao层解耦
- HTML从入门到放弃
- 2019CSUST集训队选拔赛题解(一)
- 软银集团和共享办公空间公司WeWork在日本成立合资公司
- presto 配置mysql.properties异常Database (catalog) must not be specified in JDBC URL for MySQL connector
- unknown2
- 2018-2019-20172321 《Java软件结构与数据结构》第四周学习总结