2

我有这个代码:

public void LoadData1(String link)
    {
        string temp="";
        int pos = 0;
        for (int x = 0, y = 0; x < link.Length; x++) //separate various code
            if (link[x] == 'y')
            {
                for (temp = ""; y < x; y++)
                    if(link[y]!='y')
                        temp += link[y];
                list[pos] = temp;
                pos++;
                y = x++;
            }
        string nota=list[0];
        for (int a = 0; a < list.Count() && list[a]!=null ; a++,nota=list[a])
        {
            string tempI = "";
            //immagine
            for (int x = 0; x < nota.Count(); x++)
            {
                if (nota[x] == 'p')
                    tempI += '+';
                else
                    tempI += nota[x];
            }

            //nome della pagina
            string temp1 = "";
            int c = tempI.Count();
            if (tempI.Count() > 2)
                if (tempI.ElementAt(2) == 'l') //sol
                {

                    for (int x = 0; x < c; x++)

                        if (x == 3 && tempI.ElementAt(3) == 'd')
                            temp1 += '#';
                        else
                            temp1 += tempI.ElementAt(x);
                }
                else
                {

                    for (int x = 0; x < c; x++)

                        if (x == 2 && tempI.ElementAt(2) == 'd')
                            temp1 += '#';
                        else
                            temp1 += tempI.ElementAt(x);
                }
            else
                temp1 = tempI;

            this.Temp.Add(new ImageText() { Text = temp1, linkImage = "/Accordi/"+tempI+".png" });
        }
        this.IsDataLoaded1 = true;
        this.Temp = new ObservableCollection<ImageText>();
    }

这填充了一个由文本和图像组成的列表框。但我有这个问题:当我用 3 个元素填充列表框时(例如)它一切正常,但是当我再次调用用 2 个元素填充列表框的函数时,列表框显示调用的两个元素和第三个元素空间显示我之前调用的元素!!我该如何解决这个问题?列表框由 temp 绑定,字符串链接包含一系列代码,如“DoyDodyRey”

4

2 回答 2

3

每次加载数据时,您都在设置“第 n 个”元素,但您对已经存在的内容不做任何事情,因此,如果您在前一次调用中有第三个元素,而在后续调用中只有两个,则第三个将仍然在那里。

只需先清除它,或者之后删除多余的项目。很难从您的代码中确切地看到发生了什么,但我认为list.Clear()在方法顶部调用 right 可能会完成这项工作。

如果您只想删除多余的项目,我认为您应该能够while (list.Count() >= pos) list.Remove(pos);在第一个 for 循环之后立即添加。

于 2012-11-20T13:51:32.187 回答
0

你不能在开始时声明列表,所以它是空的

List<string> yourlist = new List<string>();

并且您不需要在列表中使用 pos 就可以使用

yourlist.add(temp)

列表中的第一个帖子获取 yourlist[0] 等等

希望这有所帮助 :)

于 2012-11-20T13:57:53.150 回答