TCC em C#
Quero usar as técnicas mais simples que puderem ser usadas.
Tenho 4 textbox. Deve-se responder a perguntas.
caso esteja certa as 4 libera o botão pra próximas perguntas.
Como faço isso de maneira mais simples possível ?
Qual o código para carregar outro form, quando o botão liberado for clicado?
.
Respostas
Bruno Leandro
14/03/2012
.
14/03/2012
Meu projeto é para ensinar japonês.
Alias, as regras de validação já estão prontas.
Joel Rodrigues
14/03/2012
Enfim, você precisará fazer basicamente o seguinte:
SE
validar_primeiro E validar_segundo E validar_terceiro E validar_quarto
ENTÃO
liberar_botao;
ou seja,
if(validar_respostas_aqui)
botao.Enabled = true;
ou ainda
botao.Enabled = (validar_respostas)// condição booleana.
Boa sorte.
Joel Rodrigues
14/03/2012
//no Click de um determinado botão btnValidar (que faz a verificação)
public void btnValidar_Click(object sender, EventArgs e)
{
btnProxima.Enabled = (txtResp1.Text == resp1 && txtResp2.Text == resp2 && txtResp3.Text == resp3 && txtResp4.Text == resp4 );
}
Isso equivale a
public void btnValidar_Click(object sender, EventArgs e)
{
if(txtResp1.Text == resp1 && txtResp2.Text == resp2 && txtResp3.Text == resp3 && txtResp4.Text == resp4 )
btnProxima.Enabled = true;
}
Qualquer dúvida, posta aí.
Joel Rodrigues
14/03/2012
SegundoForm frm = new SegundoForm();
frm.ShowDialog();
Melhorando:
//abre o form e, após fechado, o libera da memória
using(SegundoForm frm = new SegundoForm())
{
frm.ShowDialog();
}
Cara, que curso é esse que você está fazendo que agora na hora de fazer o TCC você está com esse tipo de dúvida?
Boa sorte.
.
14/03/2012
pq a cada validação ocorre várias ações. Quando tiver um tempinho deixo bem claro tudo.
Ciência da Computação, sou da turma que gosta de programar, porém não sabe.
Normal, querer aprender somente quando se necessita de verdade!!
Joel Rodrigues
14/03/2012
Quando puder esclarecer melhor, posta aí que a gente tenta ajudar.
.
14/03/2012
São 4 textbox, 1 botão de OK(button1) e 1 botão NEXT(btnNEXT).
No código de cada textbox estão predefinidas as regras para a validação.
(Ex: Se terminar com U, chama o método contador (i++), e o fundo fica verde. Senão, fundo vermelho apenas.)
Em todos textbox tem o método contador e também um método chamado Verifica().
Verifica ()
{
if (i == 4)
{
i = -1;
btnNEXT.Enabled = true;
}
}
Ao clicar no botão NEXT outro formulário com novos exercícios else aberto.
E assim em diante.
Em cada método TXT1, TXT2,TXT3 e TXT4 que setam as regras, mostra uma mensagem com o resultado correto.
Como eu faço para mostrar em apenas 1 messageBox.show() todos resultado?
Joel Rodrigues
14/03/2012
Uma ideia era você fazer todas as validações em um único evento (click de um botão, por exemplo). Então você montaria um string informando se as respostas e quais estão corretas/erradas.
.
14/03/2012
tá aí a maneira que eu fiz a validação:
public TXTBOX1()
{
string frase = textBox1.Text;
frase = frase.Replace(ru, masu);
if (texto.EndsWith(eru))
{
textBox1.BackColor = Color.Green;
pictureBox1.Visible = true;
textBox1.Enabled = false;
contador(); verifica();
MessageBox.Show(frase);
}
}
private void button1_Click(object sender, EventArgs e)
{
TXTBOX1();
}
Tá funcionando assim. Porém, em cada validação dessa, tem o MessageBox.Show();
Como faço para aparecer em um só MessageBox todas as frase ?
Joel Rodrigues
14/03/2012
Como você quer ´´a forma mais simples´´, não vou sugerir muita coisa, mas com certeza dá pra enxugar esse seu código.
Boa sorte.
.
14/03/2012
Vlw. Aguardem que novas dúvidas me surgirão. ;)
Thanks guys
Joel Rodrigues
14/03/2012
Explicação: cada vez que você altera uma variável do tipo string, um novo objeto é criado na memória com o novo valor e o antigo é descartado (fica sem uso até que o Garbage Collector se encarregue de liberar a memória por ele utilizada). Utilizando o StringBuilder, você criar apenas um objeto e pode alterá-lo várias vezes. Utilize o método Append(string) para concatenar o string e o ToString() para obter o resultado final.
Boa Sorte.
.
14/03/2012
Depois dou uma olhada na net. Vlw
Como eu poderia fazer um mini-menu do tipo índice.
Verbos
..Regulares (OK APROVADO)
..Irregulares (OK APROVADO)
Gramática
..Gramática 1 (OK APROVADO)
..Gramática 2 (não aprovado ainda)
..Gramática 3 (não aprovado ainda)
Nesse menu, tem um evento click que abre o respectivo form.
E como eu poderia salvar o progresso da pessoa que estaria passando por estas fases ?
Joel Rodrigues
14/03/2012
http://msdn.microsoft.com/pt-br/library/aa730869(v=vs.80).aspx
Outra forma seria ter uma variável estática em algum lugar (uma classe, um form, etc).
Para criar o menu, você já montou o menu e quer alterar o caption para APROVADO ou NÃO APROVADO ou você ainda nem criou o menu?
Joel Rodrigues
14/03/2012
Para mudar o status do menu, altere a propriedade Text:
itemVerbos_Regulares.TExt += ´ (OK APROVADO)´;
Sugiro, ainda, alterar a Tag do item para funcionar como um status (1=aprovado/0=não aprovado) ou desabilitar o item, caso o aluno tenha sido aprovado.
.
14/03/2012
.
14/03/2012
Seguinte pessoal. Quero salvar o andamento dos estudos do usuário.
EX: Form1 = adjetivos (se acertar tudo, libera botão para form2)
Form2 = verbos (se acertar tudo, libera botão para form3)
Form3 = gramática (se acertar tudo, libera botão para form4)
E assim por diante.
Caso o usuário pare no Form2 porque tem que sair de casa. Mas quando voltar ele DEVE continuar do Form2.
Como faço ?
.
14/03/2012
Seguinte pessoal. Quero salvar o andamento dos estudos do usuário.
EX: Form1 = adjetivos (se acertar tudo, libera botão para form2)
Form2 = verbos (se acertar tudo, libera botão para form3)
Form3 = gramática (se acertar tudo, libera botão para form4)
E assim por diante.
Caso o usuário pare no Form2 porque tem que sair de casa. Mas quando voltar ele DEVE continuar do Form2.
Como faço ?
http://imageshack.us/photo/my-images/594/formpartculas.jpg
http://imageshack.us/photo/my-images/535/formgramtica.jpg/
Joel Rodrigues
14/03/2012
Ao abrir o sistema, você verifica e habilita os menus devidamente.
Se não estiver usando BD, use as configurações/propriedades do sistema.
Boa sorte.
.
14/03/2012
Não quero nem pretendo usar BD. Rodei essa internet inteira, mas parece que ninguém nunca fez esse tipo de
software. Pelo menos não achei alguém que possa me ensinar como. Você sabe como fazer? Poderia me ensinar?
Obrigado.
Joel Rodrigues
14/03/2012
Joel Rodrigues
14/03/2012
http://msdn.microsoft.com/pt-br/library/aa730869(v=vs.80).aspx
Boa sorte.
.
14/03/2012
Se o usuário começar a digitar no textbox e clicar em salvar,
após ele iniciar novamente o software vai estar gravado certinho.
Só que ainda não consegui criar uma propriedade padrão pra salvar
o form atual. Se souber. Estou procurando uma maneira ainda. Mesmo
assim já ajudou bastante, muito obrigado.
Joel Rodrigues
14/03/2012
.
14/03/2012
Digamos que tem 3 forms, o usuário está no form 2 e deseja salvar.
Quando abrir novamente o software ele volta pro form 2.
Mas.... não sei como que faz pra gravar nas configurações do default.
Salvar os dados dentro do textbox é tranquilo, porém gravar o form, ainda não sei como.
Joel Rodrigues
14/03/2012
Form f = (Form)System.Reflection.Assembly.GetExecutingAssembly().CreateInstance(WindowsFormsApplication1.Form2); f.ShowDialog();
No lugar de WindowsFormsApplication1.Form2 você põe o nome da sua solução e do seu form (valor gravado em Settings).
Boa sorte.
.
14/03/2012
Tentei colocar no load do form 1, mas não deu certo.
Tentei também no comecinho logo abaixo do public Form1.
Joel Rodrigues
14/03/2012
em algum momento você precisará abrir aquele form que você gravou o nome.
Então você põe esse código onde precisa abrir o form, beleza?
.
14/03/2012
Joel Rodrigues
14/03/2012
.
14/03/2012
Onde está salvando normalmente o conteúdo dos textboxes.
3 erros:
1º The best overloaded method match for System.Reflection.Assembly.CreateInstance(string) has some invalid arguments
2º Argument 1: cannot convert from tcc_teste02.Verbos_II to string
3º tcc_teste02.Verbos_II is a type, which is not valid in the given context
tcc_teste02 é o nome do meu form principal
Verbos_II digamos que seja meu form 2
Joel Rodrigues
14/03/2012
Ah, você tem que colocar o nome do namespace onde está o segundo form. Veja no código do form qual é o namespace em que ele está contido e use ´´MeuNamespace.MeuForm´´.
Boa sorte.
.
14/03/2012
Conversei com meu orientador (professor de C#), e ele me disse que não tem jeito de eu guardar esse tipo de informação para depois recuperar. Não tem como eu salvar o form atual, e depois que eu reiniciar a máquina, esse valor some da memória.
Ou seja, vou ter que usar BD mesmo... que triste :(
Vou ter que estudar, alguém poderia me ensinar, como salvar um form em um BD?
Obrigado !!
Joel Rodrigues
14/03/2012
Enfim, estude BD primeiro.
.
14/03/2012
Também achei que estava sendo gravado em algum lugar fixo, por isso persisti em acertar.
Mais não estou conseguindo, acho que nem tem jeito. Ou tem.. Me faz um provando. Manda o link pra eu
baixar. Segundo. Eu disse que iria estudar BD !! Só queria uma ajuda para adiantar minha vida !!
Joel Rodrigues
14/03/2012
SqlConnection conn = new SqlConnection(stringConexao); SqlCommand comando = conn.CreateCommand(); comando.CommandText = ´´INSERT INTO TABELA (CAMPOS) VALUES (@VALORES)´´; comando.Parameters.AddWithValue(´´@PARAMETRO´´, valor); try { conn.Open(); comando.ExecuteNonQuery(); conn.Close(); } catch(SqlException ex) { MessageBox.Show(ex.Message); }
Quanto à sua afirmação
Eu escrevi bem claro, leia novamente.
Não, preciso ler novamente, pois entendi bem, por isso questionei.
Quando eu disse NÃO ME ENTENDA MAL, foi exatamente para você não pensar que estou sendo grosseiro. O que eu quis dizer foi que é melhor você estudar pelo menos o básico antes de pegar qualquer código de fórum, pois vai que você obtém um resultado satisfatório com o primeiro código, é possível que você não busque entender o que está por trás, logo, não iria se interessante para seu processo de aprendizado.
Estou sem o VS aqui, mas assim que tiver acesso, desenvolvo uma aplicação pra lhe mostrar como gravar alguma coisa em arquivo.
Até mais.
Joel Rodrigues
14/03/2012
Precisando, me adicione no GTalk, fico online em horário comercial.
.
14/03/2012
O primeiro é que quando eu troco APENAS o nome da namespace, projeto simplesmente da pau. Já alterei o namespace em todos lugares possíveis, pra ficar todos forms iguais, incluindo o program.cs e o settings.cs. Não adiantou. Como faço ?
Segundo probleminha: Eu tirei 2 botões, deixei só o primeiro. Executei abriu normal, cliquei no botão abriu o form tranquilo. Daí... eu fechei pra testar novamente. Diz lá, FORM 2 ABERTO POR ÚLTIMO. OK.... Mais da pau no f.ShowDialog() do LOAD do Form1.
Olha só: http://imageshack.us/f/88/uai.png
.
14/03/2012
O primeiro é que quando eu troco APENAS o nome da namespace, projeto simplesmente da pau. Já alterei o namespace em todos lugares possíveis, pra ficar todos forms iguais, incluindo o program.cs e o settings.cs. Não adiantou. Como faço ?
Segundo probleminha: Eu tirei 2 botões, deixei só o primeiro. Executei abriu normal, cliquei no botão abriu o form tranquilo. Daí... eu fechei pra testar novamente. Diz lá, FORM 2 ABERTO POR ÚLTIMO. OK.... Mais da pau no f.ShowDialog() do LOAD do Form1.
Olha só: http://imageshack.us/f/88/uai.png
Problemas resolvidos depois de muitas tentativas.
Meu TCC está quase pronto =D. Só preciso de mais uma ajudinha. Criei um form de principal, neles tem 2 botões. O primeiro botão inicia o primeiro form de exercícios e assim por diante. O segundo, eu preciso que ele carregue o último form aberto.
Não estou conseguindo. Ao abrir o programa denovo ele da aquela mensagem Ultimo form aberto: form Tal.
Mais como faz pra carregar no evento click ?
Joel Rodrigues
14/03/2012
Ah, esse form tá uma bagunça, é mais fácil você obter resposta se me mandar email.
Até mais.
.
14/03/2012
Agora já está pronto para a apresentação, porém já quero adiantar algumas partes que planejei fazer no segundo semestre.
Como já sabem bem como funciona meu programa, acho q não vou precisar explicar denovo. Caso precise, só me avisar.
Seguinte, agora eu preciso de usar a TreeView. Vou usá-la como um índice, acho que já viram algo parecido né.
Seria algo assim:
--Inicio--
+Verbos
..Verbos 2
..Verbos 3
+Gramática
..Gramática 1
..Gramática 2
etc. E teria que ter um link em cada parte. Tem como fazer isto? Apenas os forms já vistos estariam destrancados para clicar.
Joel Rodrigues
14/03/2012
Joel Rodrigues
14/03/2012
Grato.
.
14/03/2012