使用多个屏幕向WinForms添加绑定检查

时间:2014-03-26 13:46:09

标签: c# winforms

我有一个winforms应用程序,询问用户问题,并允许他们通过单击“下一步”前进到下一个问题,然后按“上一步”返回上一个问题。

我目前设置的控件是为了从XML中读取问题(所以问题的数量是动态的,而不是硬编码的),这次有10个问题。

这是我的代码:

private void DisplayQuestion(int questionNumber)
{
  var qNumber = _xmlHandler.Questions[questionNumber];
  if (string.Equals(qNumber.QuestionType, "ComboBoxControl"))
  {
    controlPanel.Controls.Clear();
    var comboBox = new ComboBoxControl();
    comboBox.Dock = DockStyle.Fill;
    controlPanel.Controls.Add(comboBox);
  }

}

private void buttonNext_Click(object sender, EventArgs e)
{
  DisplayQuestion(++_questionNumber);
}

private void buttonBack_Click(object sender, EventArgs e)
{
  DisplayQuestion(--_questionNumber);
}

现在这对我有用,但正如预期的那样,当我在第一个屏幕上点击“上一个”并在最后一个(第10个)屏幕上点击“下一个”时,我收到异常错误。如何在上面的代码中添加边界以允许用户多次来回走动,同时确保它们不会低于0或超过10?

我已经尝试过使用基本的for循环但是我发现即使我写了循环,当“next”被击中10次时它也会结束 - 即使你还多次击中“previous”并且可能只会出现问题#5,因为你跳过它们又回来了。

2 个答案:

答案 0 :(得分:1)

private void buttonNext_Click(object sender, EventArgs e)
{
    if (_questionNumber == 10)
        return;
    DisplayQuestion(++_questionNumber);
}

private void buttonBack_Click(object sender, EventArgs e)
{
    if (_questionNumber == 1)
        return;
    DisplayQuestion(--_questionNumber);
}

答案 1 :(得分:0)

假设您的活动可以访问_xmlHandler.Questions,请在更改之前检查_questionNumber的值与收藏中元素的数量。这样,您在将来添加或删除问题时无需更改数字。

private void buttonNext_Click(object sender, EventArgs e)
{
  if (_questionNumber < _xmlHandler.Questions.Count - 1)
    DisplayQuestion(++_questionNumber);
}

private void buttonBack_Click(object sender, EventArgs e)
{
  if (_questionNumber > 0)
    DisplayQuestion(--_questionNumber);
}