Array
(
)

REGISTRAR RESPOSTA AO APERTAR UM BOTÃO NO TECLADO

Valdemir Bezerra
   - 28 out 2013

Pessoal, bom dia.
Tenho o seguinte código que exibe uma imagem e salva a informação imputada de acordo com ela. É um questionário e após clicar ela mostrar uma outra imagem e assim por diante. Contudo ao executa-lo, ele repete pela a primeira imagem e registra os dados como sendo resposta da imagem anterior. Preciso que seja exibida a primeira imagem sem repetição e que seja salvo a resposta com a imagem correta. Há uma consulta prévia a um banco de dados (onde está armezenado os caminhos da imagens) e onde pego o primeiro e último registro e realizo um sorteio no qual elas não se repetem. Esta parte está funcionando sem problemas menos a parte de registrar as respostas corretamente. O código só leva em conta valores digitados de 1 a 4 registrando as respostas.
Segue o código:
namespace exibe
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

}
MySqlConnection conexao;
MySqlCommand comando;
MySqlDataReader reader;
MySqlDataReader reader2;
MySqlDataReader leUser;
int LenLocal;
String respCorreta;
DateTime DataRealizacao;
string registraNome;
DateTime cronInicial = DateTime.Now;
DateTime cronFinal;
int colheudados = 5;
List<int> ArrayImagemSorteada = new List<int>();
string LerPrimeiroIdImagem;
int PrimeiroId;
int UltimoId;
int conta = 0;
string IdUsuario;
string Results;
string RelevanciaImg;
string NomePasta;
string CaminhoPasta;

string caminho = "SERVER=localhost; DATABASE=imagens; UID=root; PASSWORD=;";

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) //capta o que foi digitado no teclado
{

if (keyData == Keys.Escape)//fecha se apertar esc
{
this.Close(); return true;
}
if (keyData == Keys.Enter)//inicia execução do teste
{
IniciaMensagem.Start();
//Pegar os valores e registrar
DataRealizacao = DateTime.Now;

comando.CommandText = "INSERT INTO infoparticipante (DataExecucao) VALUES (@DATAREA)";
comando.Parameters.AddWithValue("DATAREA", DataRealizacao);

comando.ExecuteNonQuery();
comando.Parameters.Clear();
comando.CommandText = "SELECT * FROM infoparticipante ORDER BY IdParticipante DESC LIMIT 1";
leUser = comando.ExecuteReader();
leUser.Read();
IdUsuario = leUser["IdParticipante"].ToString();
leUser.Close();
}

if ((keyData == Keys.D1) || (keyData == Keys.NumPad1)) //se digitar um no teclado normal ou no numerico ele recolhe informação
{
colheudados = 1;
}
if ((keyData == Keys.D2) || (keyData == Keys.NumPad2))
{
colheudados = 2;

}
if ((keyData == Keys.D3) || (keyData == Keys.NumPad3))
{
colheudados = 3;

}
if ((keyData == Keys.D4) || (keyData == Keys.NumPad4))
{
colheudados = 4;

}

if (colheudados != 0) //Aqui eu forço a primeira execução da busca para mostrar as imagens.
{

mostramarcador.Start();

comando.Parameters.Clear();
comando.CommandText = "SELECT * FROM armazenaimagens WHERE Id = '" + ArrayImagemSorteada[conta] + "'";

reader = comando.ExecuteReader();

reader.Read();

//Carrega a imagem
ImgVisualiza.Load(reader["caminho"].ToString());
ImgVisualiza.SizeMode = PictureBoxSizeMode.StretchImage;
registraNome = reader["Nome"].ToString();
respCorreta = reader["Resposta_certa"].ToString();
RelevanciaImg = reader["Relevancia"].ToString();

if (respCorreta == Convert.ToString(colheudados))
{
Results = "CORRETO";
}
else
{
Results = "ERRADO";
}

reader.Close();
if (colheudados < 5)
{

cronFinal = DateTime.Now;
TimeSpan diferencaTempo = cronFinal.Subtract(cronInicial);

string tempoReacao = diferencaTempo.TotalSeconds.ToString("00:00:00");

comando.Parameters.Clear();
comando.CommandText = "INSERT INTO armazenarespostas (nome, IdVoluntario, tempoResposta, respostaCerta, repostaDada, resultado, relevancia) VALUES (@NOME_IMG_REG, @IDUSS, @TEMPO_RES1, @RESP_CERTA1, @RESP_DADA1, @RESUL, @RELEV)";
comando.Parameters.AddWithValue("NOME_IMG_REG", registraNome);
comando.Parameters.AddWithValue("IDUSS", IdUsuario);
comando.Parameters.AddWithValue("TEMPO_RES1", tempoReacao);
comando.Parameters.AddWithValue("RESP_CERTA1", respCorreta);
comando.Parameters.AddWithValue("RESP_DADA1", colheudados);
comando.Parameters.AddWithValue("RESUL", Results);
comando.Parameters.AddWithValue("RELEV", RelevanciaImg);

comando.ExecuteNonQuery();
lblMarcador.Visible = true;
cronInicial = DateTime.Now;
conta = conta + 1;

}