メモ

void tbInput_KeyDown(sender, e)
{
  if (e.KeyCode = Keys.Enter)
  {
    try
    {
      CurrentItem.Run(tbInput.Text.Trim());
      IncrementCurrentItem();
      CurrentItem.Ready();
    }
    catch (CheckException ex)
    {
      lbErrorMessage.Text = ex.Message;
      currentItemIndex = 0;
      CurrentStatus = Status.Failure;
    }
  }
}

Item CurrentItem
{
  get { return items[currentItemIndex]; }
}

void IncrementCurrentItem()
{
  if (currentItemIndex + 1 < items.Count())
  {
    currentItemIndex++;
  }
  else
  {
    currentItemIndex = 0;
    CurrentStatus = Status.Success;
  }
}

-------------------------------------------------

void Initialize()
{
  items.Add(NewItemA());
  items.Add(NewItemB());
  items.Add(NewItemC());
}

Item NewItemA()
{
  return new Item(
    "Aを入力してください。",
    i =>
      if (i.Length != 12)
      {
        throw new CheckException("12桁じゃないよ");
      }
      
      this.a = i;);
}

Item NewItemB()
{
  return new Item(
    "Bを入力してください。",
    i =>
      if (i.Length != 5)
      {
        throw new CheckException("5桁じゃないよ");
      }
      
      this.b = i;);
}