黑马程序员技术交流社区

标题: C# listbox1 删除在列表中连续4行重复的项该怎么写呢 [打印本页]

作者: 白天看见了月球    时间: 2013-8-4 00:54
标题: C# listbox1 删除在列表中连续4行重复的项该怎么写呢
比如   怎么删除中间的4个B呢
A
B
B
B
B
C
C
作者: hongiqnglik    时间: 2013-8-4 01:10
定义一个ListItem = new
int count=0;
用FOR循环遍历 LISTBOX 循环变量为INT I=0
{
   
    if(判断当前项==Listitem)
    {
            count++;
     }
    else
    {
        记录当前项赋值变量  ListItem
        count=0;
    }
    if(count=4)
    {
        i-=4;
        for(INT J=0;J<4;J++)
        {
         LISTBOX.删除(i)索引的项   
        }
    }
}
作者: sxdxgzr@126.com    时间: 2013-8-4 01:40
本帖最后由 sxdxgzr@126.com 于 2013-8-4 01:42 编辑

这题本质上就是集合问题啊关键在于找出listbox1中相同项出现4次的项的值:
第一步: 找出相同项出现4次的方法:
方法1:
         可以考虑用个字典Dictionary<string,int> 键值为listbox1每项的value,值为每项出现的次数。(写个for循环判断就可以解决)
方法2:
         用Linq:利用listbox1.Items找出出现4次的项
第二部:移除出现4次的项。
          for (int i = 0; i < 4; i++)
          {
                    listBox1.Items.RemoveAt(listBox1.Items.IndexOf(itemname));
          }


如:Form1放一个listBox1,btnRemove ,并设置listBox1的项为ABBBBCC,点击按钮时候移除
  1. using System;
  2. using System.Linq;
  3. using System.Windows.Forms;

  4. namespace ListBox
  5. {
  6.     public partial class Form1 : Form
  7.     {
  8.         public Form1()
  9.         {
  10.             InitializeComponent();
  11.             btnRemove.Click += btnRemove_Click;
  12.         }

  13.         void btnRemove_Click(object sender, EventArgs e)
  14.         {
  15.             //查询相同项出现4次的项
  16.             var match = from object item in listBox1.Items
  17.                         group item by item
  18.                         into g
  19.                         where g.Count() == 4
  20.                         select g.Key;

  21.             //集合中移除相同项出现4次的项
  22.             foreach (var g in match)
  23.             {
  24.                 for (int i = 0; i < 4; i++)
  25.                 {
  26.                     listBox1.Items.RemoveAt(listBox1.Items.IndexOf(g));
  27.                 }
  28.             }
  29.         }
  30.     }
  31. }
复制代码

作者: 白天看见了月球    时间: 2013-8-4 01:55
{:soso_e114:}果然有大神在!谢谢回复明早试试!
作者: 白天看见了月球    时间: 2013-8-4 11:11
sxdxgzr@126.com 发表于 2013-8-4 01:40
这题本质上就是集合问题啊关键在于找出listbox1中相同项出现4次的项的值:
第一步: 找出相同项出现4次的方法 ...

其实我并不是想删除出现4个相同的,而是删除连续4个相同的 比如 AABBBBAA 删除BBBB而不删除A
作者: sxdxgzr@126.com    时间: 2013-8-4 11:16
白天看见了月球 发表于 2013-8-4 11:11
其实我并不是想删除出现4个相同的,而是删除连续4个相同的 比如 AABBBBAA 删除BBBB而不删除A ...

首先肯定是要找出出现4次的项(处理简单些):然后
根据查找的出现4次的项,可以找到它在item中的索引,判断索引是否连续就可以了。若果连续就删除,否则不删除。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2