私はこれを 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\nパラメータ名: index"}
したがって、 for ループ where i <=lstQuestion.Count()に何か関係があると思います。
i<=lstQuestion.Count()- 2 、
動作しますが、最後の 2 つのレコードが表示されず、21 ではなく 19 のレコードが表示されます。
21 レコードすべてを表示するように for ループを変更するにはどうすればよいですか?
現在のループにいるときに次のループ値を見つける必要があるため、foreach ループを使用できません。