foreach (string strs in list)
            {
                if (buttonBar1.SelectedGroup.Items.Count > 0)
                {
                    for (int i = 0; i < buttonBar1.SelectedGroup.Items.Count; i++)
                    {
                        if (buttonBar1.SelectedGroup.Items[i].Text == strs)
                        {
                            
                        }
                        else
                        {
                            buttonBar1.SelectedGroup.Items.Add(strs);
                        }
                    }
                }
                else
                {
                    buttonBar1.SelectedGroup.Items.Add(strs);
                }
            }
list是个集合,buttonBar1是个空间,因为方法体会被多次触发,所以需要判断如果控件里面有这个值的,不加进入,没有的话再加。可是怎么弄都是乱得很

解决方案 »

  1.   

    是想要这个效果吧?foreach (string strs in list) 
                { 
                    if (buttonBar1.SelectedGroup.Items.Count > 0) 
                    { 
                        bool flag=false;
                        for (int i = 0; i < buttonBar1.SelectedGroup.Items.Count; i++) 
                        { 
                            if (buttonBar1.SelectedGroup.Items[i].Text == strs) 
                            { 
                                flag=true;
                                break;
                            } 
                        } 
                        if(!flag)
                           buttonBar1.SelectedGroup.Items.Add(strs); 
                    } 
                    else 
                    { 
                        buttonBar1.SelectedGroup.Items.Add(strs); 
                    } 
                } 
      

  2.   


    if(buttonBar1.SelectedGroup.Items.Count > 0)
    {
     for (int i = 0; i < buttonBar1.SelectedGroup.Items.Count; i++) 
     {
       if (buttonBar1.SelectedGroup.Items[i].Text != strs)
          buttonBar1.SelectedGroup.Items.Add(strs); 
     }
    }
    else
    {
      buttonBar1.SelectedGroup.Items.Add(strs); 
    }
      

  3.   


    Sorry,漏了一句话
    if(buttonBar1.SelectedGroup.Items.Count > 0)
    {
      foreach (string strs in list)   //补上
      { for (int i = 0; i < buttonBar1.SelectedGroup.Items.Count; i++) 
        {
         if (buttonBar1.SelectedGroup.Items[i].Text != strs)
            buttonBar1.SelectedGroup.Items.Add(strs); 
        }
      }
    }
    else
    {
      buttonBar1.SelectedGroup.Items.Add(strs); 
    }
      

  4.   

    不能编辑自己的回复,不爽
    if(buttonBar1.SelectedGroup.Items.Count > 0) 

      foreach (string strs in list)  //补上 
      { for (int i = 0; i < buttonBar1.SelectedGroup.Items.Count; i++) 
        { 
        if (buttonBar1.SelectedGroup.Items[i].Text != strs) 
            buttonBar1.SelectedGroup.Items.Add(strs); 
        } 
      } 

    else 

      foreach (string strs in list) //补上
      {
        buttonBar1.SelectedGroup.Items.Add(strs); 
      }

      

  5.   


    foreach (string strs in list) 
                { 
                    if (buttonBar1.SelectedGroup.Items.Count > 0) 
                    { 
                        bool flag=false;
                        for (int i = 0; i < buttonBar1.SelectedGroup.Items.Count; i++) 
                        { 
                            if (buttonBar1.SelectedGroup.Items[i].Text == strs) 
                            { 
                                flag=true;
                                break;
                            } 
                        } 
                        if(!flag)
                           buttonBar1.SelectedGroup.Items.Add(strs); 
                    } 
                    else 
                    { 
                        buttonBar1.SelectedGroup.Items.Add(strs); 
                    } 
                } 
      

  6.   

    是的,很容易。这代码放在一个方法体里面,而这个方法会被多次触发。那么如果不控制的话,方法被触发几次,那么这个列表的内容里面就会重复几次,这样肯定是不行的。所以我想加上判断,如果列表里面的item是有的,那么不加,如果没有,就需要加上去。本来挺好弄,就因为方法要被触发多次,所以乱了。所以请大家帮帮忙理一下。我先写其他功能,要不等下什么都做不好。
      

  7.   


    using System.Collections.Generic;        List<string> list = new List<string>();
            
            for (int i = 0; i < buttonBar1.SelectedGroup.Items.Count; i++)
            { 
                  list.Add(buttonBar1.SelectedGroup.Items[i].Text);   
            }
            
            foreach (string strs in list)
            { 
                if (Array.IndexOf<string>(list, strs) == -1)
                {
                    buttonBar1.SelectedGroup.Items.Add(strs);
                    list.Add(strs);
                }
            }
      

  8.   

     foreach (string strs in list) 
                { 
                    bool check=false;
                    if (buttonBar1.SelectedGroup.Items.Count > 0) 
                    { 
                        for (int i = 0; i < buttonBar1.SelectedGroup.Items.Count; i++) 
                        { 
                            if (buttonBar1.SelectedGroup.Items[i].Text == strs) 
                            { 
                                check=true;
                                break;
                            }                         
                        } 
                        if(!check)
                            buttonBar1.SelectedGroup.Items.Add(strs); 
                    } 
                    else 
                    { 
                        buttonBar1.SelectedGroup.Items.Add(strs); 
                    }         }
      

  9.   

     List<string> list = new List<string>();
    你的这个list跟我上面定义的,应该是两个了对吧,也就是说这个方法需要两个list<string>对吗
      

  10.   

    恩,是的我没注意你那个也命名为list 了
      

  11.   


            List<string> strList = new List<string>();
            
            for (int i = 0; i < buttonBar1.SelectedGroup.Items.Count; i++)
            { 
                  strList.Add(buttonBar1.SelectedGroup.Items[i].Text);   
            }
            
            foreach (string strs in list)
            { 
                if (Array.IndexOf<string>(strList, strs) == -1)
                {
                    buttonBar1.SelectedGroup.Items.Add(strs);
                    strList.Add(strs);
                }
            }
      

  12.   

    那么我自己定义这个list是加载好了数据的,你这个是让buttonBar1的item加数据的。那么
    foreach (string strs in list)
            { 
                if (Array.IndexOf<string>(list, strs) == -1)
                {
                    buttonBar1.SelectedGroup.Items.Add(strs);
                    list.Add(strs);
                }
            }
    里面的list是哪个跟那个啊?
      

  13.   

    “System.Array.IndexOf<string>(string[], string)”最匹配的重载方法具有一些无效参数
      

  14.   


            List<string> strList = new List<string>();
            
            for (int i = 0; i < buttonBar1.SelectedGroup.Items.Count; i++)
            { 
                  strList.Add(buttonBar1.SelectedGroup.Items[i].Text);   
            }
            
            foreach (string strs in list)
            { 
                if (Array.IndexOf<string>(strList.ToArray(), strs) == -1)
                {
                    buttonBar1.SelectedGroup.Items.Add(strs);
                    strList.Add(strs);
                }
            }
      

  15.   

    今天看数组的泛型方法都傻了~
    List<string> strList = new List<string>();
            
            for (int i = 0; i < buttonBar1.SelectedGroup.Items.Count; i++)
            { 
                  strList.Add(buttonBar1.SelectedGroup.Items[i].Text);   
            }
            
            foreach (string strs in list)
            { 
                if (!strList.Contains(strs))
                {
                    buttonBar1.SelectedGroup.Items.Add(strs);
                    strList.Add(strs);
                }
            }
      

  16.   

    foreach if for if.晕死了