Como puedo sumar valores usando 1 solo txtbox en C#

Iniciado por Ila26, 2 Septiembre 2014, 02:30 AM

0 Miembros y 2 Visitantes están viendo este tema.

Ila26

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.

Eleкtro

#1
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.Clear

Cita 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!








Ila26

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

Ila26

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

samuelhm

#4
haber si esto te da una idea, sumas con enter, y obtienes el resultado pulsando el espacio:

Código (Csharp) [Seleccionar]
 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

Eleкtro

#5
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):
Código (csharp) [Seleccionar]

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:
Código (vbnet) [Seleccionar]
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!








elezekiel

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.

Eleкtro

#7
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
> Type Parameters (<T>)


Saludos!








elezekiel

muchas gracias perdon por la interrupcion, ojala hayan resuelto la duda del creador del post, yo resolvi la mia :)

muy agradecido.