C#for循环显示所有记录

时间:2013-07-31 02:01:19

标签: c# wpf for-loop

我在wpf c#中这样做,我试图从数据库中填充一些记录。共有21条记录。

以下是我的代码的样子:

private void PopulateQuestion(int activityID, int taskID)
{
    IList<ModelSQL.question> lstQuestion = qn.GetRecords(taskID, activityID);

    for( int i= 0 ; i<=lstQuestion.Count()-1; i++)
    {
        TextBlock tb = new TextBlock();
        tb.FontSize = 19;
        tb.FontWeight = FontWeights.Bold;
        tb.Text = lstQuestion[i].QuestionContent;
        tb.TextWrapping = TextWrapping.WrapWithOverflow;
        wrapPanel1.Children.Add(tb);

        TextBox tbox = new TextBox();
        if (lstQuestion[i].Answer.Trim().Length > 0)
        {
            tbox.FontSize = 19;
            tbox.Width = 100;
            tbox.Height = 40;
            tbox.PreviewDrop += new DragEventHandler(tbox_PreviewDrop);
            tbox.Focusable = false; // Disallow user to input anything into it.
            wrapPanel1.Children.Add(tbox);
        }
        answers.Add(lstQuestion[i].Answer);

        if (lstQuestion[i].QuestionNo != lstQuestion[i + 1].QuestionNo)
        {
            StackPanel sp = new StackPanel();
            sp.Width = 1010;
          //  wrapPanel1.Children.Add(sp);
            Label spacing = new Label();
            spacing.Width = 1038;
            spacing.Content = "";
            wrapPanel1.Children.Add(spacing);
        }

    } // end of for each loop.
}

我不知道什么是相关的,什么不相关,所以我只是发布for循环所在的部分。 lstQuestion.Count()有21个计数,这是来自数据库的21个记录,但是我收到了这个错误:

  

{“指数超出范围。必须是非负数且小于规模   集合。\ r \ nParameter name:index“}

所以,我想有些事情与for循环有关,其中 i&lt; = lstQuestion.Count()

我试图把 i&lt; = lstQuestion.Count() - 2

它可以工作,但它不显示最后2条记录,它显示19条记录而不是21条记录。

如何更改for循环以显示所有21条记录?

我无法使用foreach循环,因为我需要在当前循环中找到下一个循环值。

1 个答案:

答案 0 :(得分:7)

它抛出异常:

if (lstQuestion[i].QuestionNo != lstQuestion[i + 1].QuestionNo)

当你到达最后一个(第21个)记录时,它会尝试与第22个记录进行比较,而这个记录并不存在。

您需要决定在循环的最后一次迭代中应该发生什么。至少,像:

if (i + 1 < lstQuestion.Count())
{
    if (lstQuestion[i].QuestionNo != lstQuestion[i + 1].QuestionNo)
    ...