Usuário com melhor resposta
Como converter o valor do maskedTextBox em Inteiro INT C#

Pergunta
-
Boa Tarde;
Estou fazendo uma conexão com o banco de dados mysql;
Só que estou com problema no maskedTextBox, não consigo transformar o valor dele para inteiro, e em um dos maskedTextBox, preciso transformar o valor dele em Date... quando executo o programa aparece o seguinte erro:
"FormatException ocorreu" apenas nos MaskedTextBox pois nos textbox ele aceita os comando normalmente. Alguém pode me ajudar.
Abaixo está o meu codigo:
//instancia do banco using (cadastro_projetoEntities ctx = new cadastro_projetoEntities()) { //instancia do objeto tabela Paciente paciente objTabPaciente = new paciente(); //setar os campos da tabela Paciente objTabPaciente.Nome_Paciente = textBox_Nome.Text; //Não reconhece o Convert que eu inserir para converter em inteiro objTabPaciente.CPF =Int32(maskedTextBox_CPF.Text); //Não reconhece o Convert que eu inserir para converter em inteiro objTabPaciente.RG = Convert.ToInt32(maskedTextBox_RG.Text); //Não reconhece o Convert que eu inserir para converter em DATE objTabPaciente.Dt_Nascimento = Convert.ToDateTime(maskedTextBox_Nasci.Text); objTabPaciente.CEP=Convert.ToInt32(maskedTextBox_CEP.Text); objTabPaciente.Endereco = textBox_Endereco.Text; objTabPaciente.Numero_Casa = textBox_Num_casa.Text; objTabPaciente.Bairro = textBox_Bairro.Text; objTabPaciente.Telefone = Convert.ToInt32(maskedTextBox_Telefone.Text); objTabPaciente.Celular = Convert.ToInt32(maskedTextBox_Celular.Text); objTabPaciente.Estado = textBox_Estado.Text; objTabPaciente.Cidade = textBox_Cidade.Text; objTabPaciente.Email = textBox_Email.Text; ctx.paciente.Add(objTabPaciente); ctx.SaveChanges(); MessageBox.Show("Usuario Cadastrado com Sucesso!"); } }
E assim por diante...todos os masked não são reconhecidos. Alguem pode me ajudar a converter em inteiro e data esses masked.
Respostas
-
Bom dia,
Obrigado, será sempre um prazer.
Como no banco você deixou como INT, em c# você precisa converter para INT64.
Então você remove a máscara do campo e converte. Ex:
Regex regex = new Regex(@"[^\d]"); objTabPaciente.CPF = Convert.ToInt64(regex.Replace(maskedTextBox1.Text, ""));
É importante ressaltar que o atributo "CPF" da classe "paciente" precisa ser alterado para "int64" também. Essa é a desvantagem em tratar campos longos como "int", nessa ocasião prefiro trabalhar com "string" ou seja no banco deixaria como varchar. Mas isso não é incorreto, vai de cada desenvolvedor.
Espero ter ajudo, qualquer coisa estou a disposição.
Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
- Marcado como Resposta Thales F Quintas segunda-feira, 4 de julho de 2016 13:21
Todas as Respostas
-
Boa tarde,
Andressa, remova a mascara do campo antes de converter. Você pode utilizar Regex para remover os caracteres, deixando apenas números:
Regex regex = new Regex(@"[^\d]"); objTabPaciente.CPF = Convert.ToInt32(regex.Replace(maskedTextBox1.Text, ""));
Andressa, uma opção seria você definir os atributos CPF e RG como "string" texto. Pois os campos int, double, decimal, etc. possui limites de "caracteres" tamanho. Por esse motivo ao tentar converter o CPF para int vai dar erro.
Limites:
http://www.dotnetperls.com/int-maxvalueEspero ter ajudado!
Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
- Sugerido como Resposta Silvaney sexta-feira, 1 de julho de 2016 19:50
-
Olá Silvaney, bom revê-lo hehe,
Quando vc fala definir os campos para strings eu devo fazer isso em c# ou no banco de dados mysql?
fiz o codigo que vc mostrou mas agora aparece outro erro:
"overflowexception não foi manipulada"
- Editado Andressa.s sexta-feira, 1 de julho de 2016 21:04
-
Veja se esta classe te ajuda esta classe http://www.codigoexpresso.com.br/Home/Postagem/28
Se a resposta contribuiu com seu aprendizado por favor marque como Útil
Se solucionou seu problema por favor marque como Resposta
Atenção, se seu problema foi resolvido não deixe o post aberto
Visite : www.codigoexpresso.com.br
- Editado Código Expresso quarta-feira, 28 de setembro de 2016 00:22
-
Bom dia,
Obrigado, será sempre um prazer.
Como no banco você deixou como INT, em c# você precisa converter para INT64.
Então você remove a máscara do campo e converte. Ex:
Regex regex = new Regex(@"[^\d]"); objTabPaciente.CPF = Convert.ToInt64(regex.Replace(maskedTextBox1.Text, ""));
É importante ressaltar que o atributo "CPF" da classe "paciente" precisa ser alterado para "int64" também. Essa é a desvantagem em tratar campos longos como "int", nessa ocasião prefiro trabalhar com "string" ou seja no banco deixaria como varchar. Mas isso não é incorreto, vai de cada desenvolvedor.
Espero ter ajudo, qualquer coisa estou a disposição.
Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
- Marcado como Resposta Thales F Quintas segunda-feira, 4 de julho de 2016 13:21
-
Boa Noite;
Então obrigada eu resolvi mudar os campo que estavam em int para string e mudei os campos do banco de dados para varchar, pois estava dando mto conflito com esses maskedTextBox....Mas me ajudou mto a dica de vcs, obrigada.
Desculpa a demora pra responder, eu dei uma pausa nesse projeto para iniciar outro, agora retomei esse.
Obrigada de verdade!
- Sugerido como Resposta Dalton Espindola quarta-feira, 14 de fevereiro de 2018 23:05
- Não Sugerido como Resposta Dalton Espindola quarta-feira, 14 de fevereiro de 2018 23:05