TCC em C#

.NET

14/03/2012

Estou fazendo meu TCC, preciso de muita ajuda. Sou novato 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?
.

.

Curtidas 0

Respostas

Bruno Leandro

Bruno Leandro

14/03/2012

como voce pretende validar o campo texto, sendo que a pessoa pode escrever uma palavra errada, sem acento ou com, com s,ç, etc
GOSTEI 0
.

.

14/03/2012

Não estou considerando isso ainda.
Meu projeto é para ensinar japonês.

Alias, as regras de validação já estão prontas.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Em que momento você vai validar as respostas? Clicando em um botão para verificar?
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.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Sendo um pouco mais claro: se sua validação consiste em verificar se o texto digitado é igual a um pré-definido, considere o seguinte exemplo.

//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í.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Complementando, para abrir outro form, use o seguinte código:

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.
GOSTEI 0
.

.

14/03/2012

Vlw cara, vou experimentar aqui. Mais é um pouco mais complexo do que parece,
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!!
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Bom, então boa sorte.
Quando puder esclarecer melhor, posta aí que a gente tenta ajudar.
GOSTEI 0
.

.

14/03/2012

Tá vamos lá, detalhes do projeto.

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?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Em que evento você está validando os TextBoxes?
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.
GOSTEI 0
.

.

14/03/2012

A validação no evento click do botão é impossível, iria ficar imensa.
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 ?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Bem, nesse caso, declare uma variável pública e, ao invés de mostrar o MessageBox com a frase, apenas concatene a frase com o string público. No final de todas as validações, esse string deverá conter todas as frases.
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.
GOSTEI 0
.

.

14/03/2012

É boa ideia, vou tentar.
Vlw. Aguardem que novas dúvidas me surgirão. ;)

Thanks guys
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Dica: use um objeto do tipo StringBuilder e não um String para concatenar as frases.
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.
GOSTEI 0
.

.

14/03/2012

É vou ter que pesquisar, como utilizar isso aí.
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 ?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Para guardar o status/nível da pessoa você pode usar as configurações do projeto, veja em:
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?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Enfim, adicione um MenuStrip ao seu form, crie os itens e seus respectivos eventos. Para cada item do menu, dê um nome distinto, por exemplo itemVerbos_Regulares, itemVerbos_Irregulares.
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.
GOSTEI 0
.

.

14/03/2012

Interessante. Assim que tiver um tempinho eu tento. E ainda posto umas fotos de como está ficando o projeto só para vocês terem uma noção. Talvez fica mais fácil para me ajudarem. Vlw people
GOSTEI 0
.

.

14/03/2012

Uffa, finalmente, acabaram minhas provas. De volta ao TCC.

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 ?
GOSTEI 0
.

.

14/03/2012

Uffa, finalmente, acabaram minhas provas. De volta ao TCC.

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 ?

Fotos

http://imageshack.us/photo/my-images/594/formpartculas.jpg
http://imageshack.us/photo/my-images/535/formgramtica.jpg/
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Cara, cria um campo no banco de dados onde você gravará o status do usuário.
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.
GOSTEI 0
.

.

14/03/2012

Joel, vlw pela dica, mas eu não consegui fazer isso pelas configurações/propriedades do Visual Studio 2010.
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.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Nesse link é explicado como usar as configurações do projeto. Qualquer dúvida, é só falar.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Falha minha, segue o link:
http://msdn.microsoft.com/pt-br/library/aa730869(v=vs.80).aspx

Boa sorte.
GOSTEI 0
.

.

14/03/2012

Cara, consegui uma parte :D.
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.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Como você utilizará o form gravado? Digo, não bastaria apenas guardar o nome do form?
GOSTEI 0
.

.

14/03/2012

Pretendo gravar o form pelo botão salvar.

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.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Use as configurações para salvar o nome do form atual (um string), para abrir o form, use o seguinte código:
 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.
GOSTEI 0
.

.

14/03/2012

Onde eu devo por esse código ?
Tentei colocar no load do form 1, mas não deu certo.
Tentei também no comecinho logo abaixo do public Form1.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Cara, aí vai depender de você. Eu estou supondo o seguinte:
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?
GOSTEI 0
.

.

14/03/2012

Já tentei colocar em vários lugares, mas tá dando pau, não tá funcionando não :S
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Que erro exatamente está ocorrendo?
GOSTEI 0
.

.

14/03/2012

Coloquei o código dentro no evento click do botão salvar.
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
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

É por que você não colocou entre aspas, cara. O argumento dessa função é um string.
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.
GOSTEI 0
.

.

14/03/2012

Hey, pessoal, más notícias.
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 !!
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Cara, não me entenda mal, mas vou te dar uma dica: ESTUDE PRIMEIRO COMO DESENVOLVER E ACESSAR O BANCO DE DADOS. Se você APRENDER como gravar um campo, saberá como gravar qualquer um. Porém, não sei se concordo bem com o que você falou aí. Como assim vai ser apagado da memória? E você pretendia gravar em memória apenas? Você precisa gravar em um local FIXO, por isso se usa as configurações (Properties.Settings.Default) que ficam armazenadas EM ARQUIVO.
Enfim, estude BD primeiro.
GOSTEI 0
.

.

14/03/2012

Eu disse gravar em memória, pois o meu professor me disse isso. Eu escrevi bem claro, leia novamente.
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 !!
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Bom, aí vai um código pra te dar uma ideia de como PODE SER:
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.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Estou te enviando um email com uma aplicação que fiz aqui como exemplo. Reiniciei o computador várias vezes e as configurações ficaram salvas, teste aí e me diga no que deu.
Precisando, me adicione no GTalk, fico online em horário comercial.
GOSTEI 0
.

.

14/03/2012

Cara, tranquilo. Olhei seu arquivo, é quase o que eu quero exatamente. Precisei só fazer algumas alterações pra ficar perfeito, porém, só tem um probleminha. Na verdade 2.

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
GOSTEI 0
.

.

14/03/2012

Cara, tranquilo. Olhei seu arquivo, é quase o que eu quero exatamente. Precisei só fazer algumas alterações pra ficar perfeito, porém, só tem um probleminha. Na verdade 2.

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 ?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Não sei se entendi bem. mas vejamos... Lá onde eu codifiquei pra mostrar a mensagem ´´Ultimo form aberto: tal´´ é também onde eu pus pra abrir tal form. Ponha o código que está lá no evento que mais for adequado, onclick de um botão, por exemplo.
Ah, esse form tá uma bagunça, é mais fácil você obter resposta se me mandar email.
Até mais.
GOSTEI 0
.

.

14/03/2012

Hey, estou de volta. Vim para dizer que tudo o que eu queria consegui fazer, meu professor me ajudou bastante no finalzinho.
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.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Não parece difícil. Onde você está armazenando os forms já visualizados?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

14/03/2012

Ah, por favor, abra outro tópico com um título sugestivo, já que estamos tratando de outra rotina específica.
Grato.
GOSTEI 0
.

.

14/03/2012

Ok ! Neste caso então, CLOSED TOPIC !!
GOSTEI 0
POSTAR