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つの要素で埋めるための関数を再度呼び出すと、リストボックスは呼び出しの2つの要素を表示し、3番目にスペースは、以前の呼び出しの要素を表示します!! どうすればこの問題を解決できますか? リストボックスは一時的にバインドされており、文字列リンクには「DoyDodyRey」のような一連のコードが含まれています

4

2 に答える 2

3

データをロードするたびに「n番目」の要素を設定しますが、すでにそこにあるものについては何もしていません。したがって、前の呼び出しで3番目の要素があり、次の呼び出しで2つしかない場合、3番目の要素はまだそこにいます。

最初にクリアするか、後で余分なアイテムを削除するだけです。コードから何が起こっているのかを正確に確認することは困難ですlist.Clear()が、メソッドの先頭にある呼び出しでおそらくうまくいくと思います。

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 に答える