private void avancarEstadoDoAlgoritmo() { switch (estadoAtual) { case EstadoAlgoritmo.Parado: estadoAtual = EstadoAlgoritmo.LendoEntrada; lblEstado.Text = "Estado: Lendo entrada e contando frequência"; break; case EstadoAlgoritmo.LendoEntrada: estadoAtual = EstadoAlgoritmo.ConstruindoArvore; lblEstado.Text = "Estado: Construindo árvore"; break; case EstadoAlgoritmo.ConstruindoArvore: estadoAtual = EstadoAlgoritmo.GerandoCodigo; lblEstado.Text = "Estado: Gerando o código de cada caractere"; break; case EstadoAlgoritmo.GerandoCodigo: estadoAtual = EstadoAlgoritmo.GerandoSaida; lblEstado.Text = "Estado: Gerando saída"; caractereAtual = 0; break; case EstadoAlgoritmo.GerandoSaida: estadoAtual = EstadoAlgoritmo.Parado; lblEstado.Text = "Estado: Saída gerada, fim do algoritmo"; break; } }
private void btnIniciarParar_Click(object sender, EventArgs e) { if (btnIniciarParar.Text == "Iniciar") // Iniciar { if (rtbEntrada.ForeColor == SystemColors.GrayText) { MessageBox.Show(this, "Digite algo na caixa de texto de entrada!", "Impossível iniciar algoritmo"); return; } // Reiniciar variáveis caractereAtual = 0; estadoAtual = EstadoAlgoritmo.Parado; avancarEstadoDoAlgoritmo(); // Reiniciar controles btnIniciarParar.Text = "Parar"; btnPausarContinuar.Text = "Pausar"; btnPausarContinuar.Enabled = true; btnProximoPasso.Enabled = true; tkbIntervaloPassos_Scroll(null, null); // Atualiza timerPasso.Interval e lblVelocidade.Text trvArvore.Nodes.Clear(); dgvCaracteres.Rows.Clear(); rtbSaidaBinario.Clear(); rtbSaidaBytes1252.Clear(); rtbSaidaBytesUTF8.Clear(); lblInfoDiferenca.Text = ""; lblInfoSaida.Text = "Saída: "; // Preparar controles btnAbrirArquivo.Enabled = false; txtCaminhoArquivo.Enabled = false; rtbEntrada.ReadOnly = true; trocarTamanhoFonteSaida(); SubstituirWindows1252InvalidosDaEntrada(); // Iniciar passos timerPasso_Tick(null, null); timerPasso.Start(); } else // Parar { // Reiniciar variáveis estadoAtual = EstadoAlgoritmo.Parado; lblEstado.Text = "Estado: Parado"; // Reiniciar controles timerPasso.Stop(); btnAbrirArquivo.Enabled = true; txtCaminhoArquivo.Enabled = true; rtbEntrada.ReadOnly = false; rtbEntrada.SelectAll(); rtbEntrada.SelectionBackColor = SystemColors.Window; btnIniciarParar.Text = "Iniciar"; btnPausarContinuar.Text = "Pausar"; btnPausarContinuar.Enabled = false; btnProximoPasso.Enabled = false; } }