重新排列列表框中的数字内容

时间:2016-11-21 20:52:40

标签: c# winforms

我试图改组列表框中当前包含的数字。

但是我的索引出现错误

我能够用数组做到这一点,虽然现在我试图在没有使用任何容器或数组的情况下进行洗牌,但是遇到了这样的问题。

this.index = 0;
int a = Convert.ToInt32(lstHoldValue.Items.Count);
lstHoldValue.Items.Clear();

for (int i = 0; i < a; i++)
{
    int idx = rnd.Next(i, a);

    //swap elements
    int tmp = Convert.ToInt32(lstHoldValue.Items[i]);

   (lstHoldValue.Items[i]) = Convert.ToInt32(lstHoldValue.Items[idx]);
    (lstHoldValue.Items[idx]) = Convert.ToInt32(tmp);
    lstHoldValue.Items.Add("\t" + Convert.ToInt32(lstHoldValue.Items[i]));//show array in a listbox                    

}

1 个答案:

答案 0 :(得分:0)

this.index = 0; //这是为了什么?

int a = listHoldValue.Count; // Count默认返回一个整数

// lstHoldValue.Items.Clear(); //删除此行,它会清除存储的项目

for (int i = 0; i < a; i++)
{
    int idx = rnd.Next(i, a);

//swap elements


 int tmp = Convert.ToInt32(lstHoldValue.Items[i]);
        lstHoldVAlue.Items.Insert(i,lstHoldValue.Items[idx]);
   (lstHoldValue.Items[i]) = Convert.ToInt32(lstHoldValue.Items[idx]);
    (lstHoldValue.Items.Insert(idx,temp);
lstHoldValue.Items.Add("\t" + Convert.ToInt32(lstHoldValue.Items[i]));//this line is redundant because you have already added item[i] at index [idx] 

}