programacion instrucciones ejemplos basicas c# .net winforms textbox currency

instrucciones - A medida que el usuario escribe: separe los números con comas y formatéelo en moneda en C#



instrucciones basicas de c++ (2)

Tengo un cuadro de texto llamado textBox1.

Objetivo: Tan pronto como el usuario ingrese textBox1, quiero que el programa convierta los números en formato de moneda.

Ejemplo: si el usuario tipeó 123456, quiero que el programa separe los números 123,456 como ese.


A continuación se muestra el enfoque básico, cuando el texto cambia, conviértalo en un decimal y luego cambie el texto a la representación de cadena del decimal.

textBox1.TextChanged += (s,e) => { var value = Decimal.Parse(textBox1.Text); textBox1.Text = value.ToString("C"); }

También debe verificar el número ilegal en textBox. Eche un vistazo a Decimal.TryParse .


Sobre la investigación encontré este código. Este código hizo exactamente lo que yo quería.

private void form_3_Load(object sender, EventArgs e) { textBox1.Text = "$0.00"; } private void textBox1_TextChanged(object sender, EventArgs e) { /// //Remove previous formatting, or the decimal check will fail including leading zeros string value = textBox1.Text.Replace(",", "") .Replace("$", "").Replace(".", "").TrimStart(''0''); decimal ul; //Check we are indeed handling a number if (decimal.TryParse(value, out ul)) { ul /= 100; //Unsub the event so we don''t enter a loop textBox1.TextChanged -= textBox1_TextChanged; //Format the text as currency textBox1.Text = string.Format(CultureInfo.CreateSpecificCulture("en-US"), "{0:C2}", ul); textBox1.TextChanged += textBox1_TextChanged; textBox1.Select(textBox1.Text.Length, 0); } bool goodToGo = TextisValid(textBox1.Text); btn_test.Enabled = goodToGo; if (!goodToGo) { textBox1.Text = "$0.00"; textBox1.Select(textBox1.Text.Length, 0); } /// } private bool TextisValid(string text) { Regex money = new Regex(@"^/$(/d{1,3}(/,/d{3})*|(/d+))(/./d{2})?$"); return money.IsMatch(text); } void tb_TextChanged(object sender, EventArgs e) { //Remove previous formatting, or the decimal check will fail string value = textBox1.Text.Replace(",", "").Replace("$", ""); decimal ul; //Check we are indeed handling a number if (decimal.TryParse(value, out ul)) { //Unsub the event so we don''t enter a loop textBox1.TextChanged -= tb_TextChanged; //Format the text as currency textBox1.Text = string.Format(CultureInfo.CreateSpecificCulture("en-US"), "{0:C2}", ul); textBox1.TextChanged += tb_TextChanged; } }