Saludos...
mi pregunta es como puedo sumar valores usando un txtbox
por ejemplo quiero entrar el precio de unos articulos en un txtbox digamos
1.55
.89
1.25
cada ves que entre un valor el txtbox deberia quedar vacio usando string.empty;
me imagino que seria usando 2 botones uno para ir agregando los valores y otro para que me devuelva la suma.
espero que me puedan ayudar se los agradecere de todo corazon.
Cita de: Ila26 en 2 Septiembre 2014, 02:30 AMcada ves que entre un valor el txtbox deberia quedar vacio usando string.empty;
Incorrecto, deberías usar el método
TextBox.ClearCita de: Ila26 en 2 Septiembre 2014, 02:30 AMme imagino que seria usando 2 botones uno para ir agregando los valores y otro para que me devuelva la suma.
Podrías evitar ese botón aidicional, capturando la tecla
Enter en el textbox donde introdujeses el valor, pero lo cierto es que me parece más correcto hacer lo que dices, añadir un botón y presionarlo para realizar la suma.
Cita de: Ila26 en 2 Septiembre 2014, 02:30 AM2 botones uno para ir agregando los valores
¿Entonces el TextBox es multilinea? (¿
TextBox.Multiline = True ?), o es
SingleLine y separas los valores con espacios u otro delimitador, o...?
Mientras no aclares ese importante detalle es confuso lo que dices, pero sea como sea parece que tienes la idea del desarrollo clara, ¿en que necesitas ayuda?.
Saludos!
Como me explico
digamos que es una caja registradora,la caja no tiene varios txtboxes
solo tiene 1
es exactamente lo que quiero lograr
con un boton ir agregando los precios de x articulos y al final en ese mismo txtbox obtener el total
nose si me logre explicar bien
el txtbox es singleline
lo que hago es entro el valor
1.25
vacio el campo con txtbox.text=string.empty
y luego entro otro valor
.89
y con el otro boton obtener la suma
haber si esto te da una idea, sumas con enter, y obtienes el resultado pulsando el espacio:
public partial class Form1 : Form
{
double suma = 0;
public Form1()
{
InitializeComponent();
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter) //sumar
{
suma += Convert.ToDouble(this.textBox1.Text);
textBox1.Clear();
}
if (e.KeyChar == (char)Keys.Space) ///resultado
{
textBox1.Clear();
textBox1.Text = suma.ToString();
}
}
}
Es muy rudimentario y tendrias que asegurarte que hay numeros y tal, pero para que te hagas una idea. asi no usarias ni botones, solo el textbox.
Ademas, asi te ahorrarias que fuera multiline
Cita de: Ila26 en 2 Septiembre 2014, 03:30 AM
el txtbox es singleline
lo que hago es entro el valor
1.25
vacio el campo con txtbox.text=string.empty
y luego entro otro valor
.89
y con el otro boton obtener la suma
ah, estás usando el mismo textbox, por lo que entiendo basicamente como si fuese una calculadora, entras un valor, le das a un botón para limpiar el valor, entras otro valor, y le das a otro botón para obtener el resultado.
No me parece muy practico utilizar el mismo textbox para 2 funciones distintas (introducir los valores a sumar y mostrar el resultado), yo usaría un Textbox adicional para mostrar el resultado, pero si así es como prefieres con 1 solo textbox entonces podrías hacerlo de esta manera:
C# (traducción al vuelo):
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
public class testForm
{
// aqui guardarás los valores introducidos
private List<double> values = new List<double>();
private void bt_AñadirValor_Click()
{
double value = 0.0;
if (double.TryParse(tb_Valores.Text.Replace('.', ','), value)) {
values.Add(value);
// añado el valor a la colección de valores.
tb_Valores.Clear();
// limpio el textbox.
} else {
MessageBox.Show("El valor no es válido", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void bt_Sumar_Click()
{
tb_Valores.Text = (from value in values).Sum;
values.Clear();
// limpio los valores guardados.
}
private void tb_Valores_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == Convert.ToChar(Keys.Enter)) {
bt_AñadirValor.PerformClick();
}
}
}
//=======================================================
//Service provided by Telerik (www.telerik.com)
//Conversion powered by NRefactory.
//Twitter: @telerik
//Facebook: facebook.com/telerik
//=======================================================
VB:
Public Class testForm
Private values As New List(Of Double) ' aqui guardarás los valores introducidos
Private Sub bt_AñadirValor_Click() Handles bt_AñadirValor.Click
Dim value As Double = 0.0R
If Double.TryParse(tb_Valores.Text.Replace("."c, ","c), value) Then
values.Add(value) ' añado el valor a la colección de valores.
tb_Valores.Clear() ' limpio el textbox.
Else
MessageBox.Show("El valor no es válido", "", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End Sub
Private Sub bt_Sumar_Click() Handles bt_Sumar.Click
tb_Valores.Text = (From value As Double In values).Sum
values.Clear() ' limpio los valores guardados.
End Sub
Private Sub tb_Valores_KeyPress(sender As Object, e As KeyPressEventArgs) Handles tb_Valores.KeyPress
If e.KeyChar = Convert.ToChar(Keys.Enter) Then
bt_AñadirValor.PerformClick()
End If
End Sub
End Class
Saludos!
perdon por esto, solo lei y me intereso a modo de aprendizaje:
private List<double> values = new List<double>();
ese "double" es un array con tipo de dato double solamente? o es una variable que se le asigna el tipo de dato?
Conozco poco de C# disculpas por entrometerme!
gracias.
Cita de: elezekiel en 2 Septiembre 2014, 04:24 AMese "double" es un array con tipo de dato double solamente? o es una variable que se le asigna el tipo de dato?
Es una Lista, llamarlo Array sería poco preciso, pero si, y solo podrás añadir valores del tipo Double a la Lista.
> List<T> Class (http://msdn.microsoft.com/en-us/library/6sh2ey19%28v=vs.110%29.aspx)
> Type Parameters (<T>) (http://msdn.microsoft.com/en-us/library/0zk36dx2.aspx)
Saludos!
muchas gracias perdon por la interrupcion, ojala hayan resuelto la duda del creador del post, yo resolvi la mia :)
muy agradecido.