专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > WinForm

两个listbox的有关操作(Winfrom)

发布时间:2011-06-23 13:50:50 文章来源:www.iduyao.cn 采编人员:星星草
两个listbox的相关操作(Winfrom)。

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 > 0)
                {
                    object oTempItem = listBoxSelected.SelectedItem;
                    listBoxSelected.Items.RemoveAt(selectindex);
                    listBoxSelected.Items.Insert(selectindex - 1, oTempItem);
                    listBoxSelected.SelectedIndex = selectindex - 1;
                } 
            }
            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 - 1)
               {
                   object oTempItem = listBoxSelected.SelectedItem;
                   listBoxSelected.Items.RemoveAt(selectindex);
                   listBoxSelected.Items.Insert(selectindex + 1, oTempItem);
                   listBoxSelected.SelectedIndex = selectindex + 1;
               }
            }
            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 - 1; i >= 0; 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();         
        }

 

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: