1. 程式人生 > >C#對ListBox去重

C#對ListBox去重

首先是對於一個listBox裡面有的項,假設listBox有重複資料可以用這個函式去除重複資料

        ///<summary>
        // listBox自身已有項去重
        /// </summary>
        /// <param name="listBox">需要去重ListBox</param>
        /// 
        public void Self_Move_Repeat(ListBox listBox)
        {
            for(int i = 0; i < listBox.Items.Count; i++)
            {
                for
(int j=i+1;j< listBox.Items.Count; j++) { if (listBox.Items[i].Equals(listBox.Items[j])) listBox.Items.Remove(listBox.Items[j]); } } }

第二中是針對要插入的資料和listBox裡面的資料進行比對,如果有的話就不插入,這裡要注意,需要判別listBox裡面的內容是不是為空,為空的話就eles一下,直接進行插入。否則會報錯,因為當listBox裡面沒有項的時候listBox.Items[0]的邏輯是不存在,而非空。

        public void Add_Move_Repeat(string str,ListBox listBox)
        {
            //MessageBox.Show(listBox.Items[i].ToString());
            if (listBox.Items.Count > 0)
            {
                int i = 0;
                for (; i < listBox.Items.Count; i++)
                {
                    if (listBox.Items
[i].ToString().Equals(str)) { break; } } if(i==listBox.Items.Count) listBox.Items.Add(str); } else { listBox.Items.Add(str); } }

這裡把把兩種去重方案放在一個ListBox_Oprate類裡面,用的時候new一個出來傳出引數就可以使用

ListBox_Oprate listBox_Oprate=new ListBox_Oprate;
listBox_Oprate. Self_Move_Repeat(listBox); //listBox是要去重的listBox的名稱
listBox_Oprate. Self_Move_RepeatAdd_Move_Repeat(string str, listBox);//str是要新增的字串,listBox是要加到的Box名稱

附上整個類包,記得應用using System.Windows.Controls;不然不能加入ListBox形參

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;

namespace 管理系統
{
    class ListBox_Oprate
    {
        /// <summary>
        /// listBox自身已有項去重
        /// </summary>
        /// <param name="listBox">需要去重ListBox</param>
        /// 
        public void Self_Move_Repeat(ListBox listBox)
        {
            for(int i = 0; i < listBox.Items.Count; i++)
            {
                for(int j=i+1;j< listBox.Items.Count; j++)
                {
                    if (listBox.Items[i].Equals(listBox.Items[j]))
                        listBox.Items.Remove(listBox.Items[j]);
                }
            }
        }
        /// <summary>
        /// listBox已有則不加入listBox
        /// </summary>
        /// <param name="str"></param>
        /// <param name="listBox"></param>
        public void Add_Move_Repeat(string str,ListBox listBox)
        {
            //MessageBox.Show(listBox.Items[i].ToString());
            if (listBox.Items.Count > 0)
            {
                int i = 0;
                for (; i < listBox.Items.Count; i++)
                {
                    if (listBox.Items[i].ToString().Equals(str))
                    {
                        break;
                    }
                }
                if(i==listBox.Items.Count)
                    listBox.Items.Add(str);
            }
            else
            {
                listBox.Items.Add(str);
            }
        }
    }
}