Textbox para receber . ( ponto ) e não ( virgula) . C#

galera , estou criando um programa em C#, nele há um TEXTBOX com valor monetario,
preciso de uma funcao que ele salva ex: 10.00 ( ponto, e duas casas decimais)

eu consegui um com (virgula), mas eu preciso com (ponto), pois meu banco tem que aceitar numeros decimal (00.00)


Caro @Deybson_10, gostaria de explicar a realidade do que você está fazendo. O correto é você fazer virgula (,), se a sua língua é pt-BR ou seja, Brasileira, porque, o formato do números com virgula no Brasil é assim. Realmente as bases de dados são configurados no formato norte-americano (que é um padrão adotado, por 99% dos desenvolvedores, por motivos de padrão) e com isso você deve converter o dado no formato desejado pelo banco.

Exemplo:

Formato Brasileiro:

1.000,00

Formato Norte Americano:

1,000.00

Em C# isso é muito simples fazer essa conversão, estou aqui imaginando como você grava esses dados, mas, em si vou te passar um exemplo razoável para que você entenda ou pelo menos ajude a entender.


Exemplo:

Tem uma classe com o nome de Items:

public class Items
{
	public int Id { get; set; }
	public string Description { get; set; }
	public decimal Value { get; set; }
}

Vamos agora preencher (passagem de mensagem) para o seus campos:

Items items = new Items();
items.Id = 1;
items.Description = "Descrição 1";
items.Value = decimal.Parse("250,00");

Perceba que na última linha tem um campo “Value” que é do tipo decimal, para preencher, utiliza-se um decima.Parse que ele vai pegar o formato que está e converte no formato americano.

Observer o debug:

o valor de “Value” já está convertido corretamente.

Como gravar isso de maneira eficiente na base de dados, utilizado SQLClient:

public class DalItems
{
	public Items Insert(Items item)
	{
		using (SqlCommand command = new SqlCommand())
		{
			command.CommandText = "INSERT INTO items(Description, Value) VALUES(@Description, @Value); SELECT @@IDENTITY;";
			command.Parameters.Add("@Description", SqlDbType.VarChar, 50).Value = item.Description;
			command.Parameters.Add("@Value", SqlDbType.Decimal).Value = item.Value;
			item.Id = int.Parse(command.ExecuteScalar().ToString());
		}
		return item;
	}
}

Os outros métodos por exemplo Edit (update) também seguindo essa lógica, porque, assim a conversão é feita pelo framework automaticamente!

No caso especifico o problema não é o TextBox é a forma como você está interpretando. Qualquer duvida pergunte?

1 curtida

Uma dúvida!
o meu banco de dados esta salvando
Decimal com 2 numero depois da virgula.

No sistema:
Se eu usar um double 10 ele da certo pq ele salva 10.00

Se eu usar 10.50 ele salva normal.

Mas se eu colocar 10.2 ele nao salva porque ele teria q ficar 10,20
Mas ele so tem uma casa decimal.

O que sera que eu faco? Help

Não é assim, internamente o banco só salva o que precisa, o melhor é usar decimal (18,2) por causa dos cálculos. Como o banco de dados salva não tem problema, depois você formata da melhor maneira para seu sistema!