none
Como realizar una operacionn dependiendo del textbox que use haciendo uso de una funcion RRS feed

  • Pregunta

  • Hola amigos he estado realizando un pequeño programa que convierte de grados celsius a fahrenheit, lo que pasa es que quiero convertir de celsius a fahrenheit cuando escriba en el textbox correspondiente de celsius y que realize la operacion de fahrenheit a celsius cuando escriba en el textbox correspondiente y se logre funcionar con el mismo boton de fahrenheit quise logre hacerlo con un If pero lo mejor seria con una funcion les agradeceria mucho si me pudieran ayudar dejo parte del codigo

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace ConvertirCelsiusaFarenheitFormulario
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
           //**********************declarcion de variables
            double resultado,numero1;
            
            private void Limpiar()
            {
                txtCelsius.Clear();
                txtFahrenheit.Clear();
            }
    
            private void btnLimpiar_Click(object sender, EventArgs e)
            {
                Limpiar();
            }
    
            private double Convertir(double num1)
            {
               resultado = (num1 * 9) / 5 + 32;
               return resultado;
            }
    
            private double InversaConversion(double num1)
            {
                resultado = (num1 - 32) * 5 / 9;
                return resultado;
            }
    
            private void btnConvertir_Click(object sender, EventArgs e)
            {
                try
                {
                    if (txtCelsius.Text != "")
                    {
                        numero1 = Convert.ToDouble(txtCelsius.Text);
                        resultado = Convertir(numero1);
                        txtFahrenheit.Text = Convert.ToString(resultado);
    
                    }
                    else if (txtFahrenheit.Text != "")
                    {
                        numero1 = Convert.ToDouble(txtFahrenheit.Text);
                        resultado = InversaConversion(numero1);
                        txtCelsius.Text = Convert.ToString(resultado);
                    }
                   
                }
                catch (Exception)
                {
    
                    MessageBox.Show("Introduce un numero en el cuadro de texto Grados Celsius.","Sistema de Conversion",MessageBoxButtons.OK,MessageBoxIcon.Information);
                    txtCelsius.Focus();
                }
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                Limpiar();
                txtCelsius.Focus();
            }
    
        }
    }


    • Editado Geardarko domingo, 26 de mayo de 2019 4:22 Error de sintaxis
    domingo, 26 de mayo de 2019 4:21

Respuestas

  • Hola

    intenta con esto

    Solo manda los evento leave de los textbox  esta funcion

    private void TxtCelsius_TextChanged(object sender, EventArgs e)
    {
        try
        {
            double resultado, numero1;
            TextBox t = ((TextBox)sender);
            if (txtCelsius.Focused)
            {
                numero1 = Convert.ToDouble(txtCelsius.Text);
                resultado = Convertir(numero1);
                txtFahrenheit.Text = resultado.ToString("N2");
            }
            else if (txtFahrenheit.Focused)
            {
                numero1 = Convert.ToDouble(txtFahrenheit.Text);
                resultado = InversaConversion(numero1);
                txtCelsius.Text = resultado.ToString("N2");
            }
        }
        catch (Exception)
        {
    
            MessageBox.Show("Introduce un numero en el cuadro de texto Grados Celsius.", "Sistema de Conversion", MessageBoxButtons.OK, MessageBoxIcon.Information);
            txtCelsius.Focus();
        }
    }

    Espero te sirva


    domingo, 26 de mayo de 2019 4:42

Todas las respuestas

  • Hola

    intenta con esto

    Solo manda los evento leave de los textbox  esta funcion

    private void TxtCelsius_TextChanged(object sender, EventArgs e)
    {
        try
        {
            double resultado, numero1;
            TextBox t = ((TextBox)sender);
            if (txtCelsius.Focused)
            {
                numero1 = Convert.ToDouble(txtCelsius.Text);
                resultado = Convertir(numero1);
                txtFahrenheit.Text = resultado.ToString("N2");
            }
            else if (txtFahrenheit.Focused)
            {
                numero1 = Convert.ToDouble(txtFahrenheit.Text);
                resultado = InversaConversion(numero1);
                txtCelsius.Text = resultado.ToString("N2");
            }
        }
        catch (Exception)
        {
    
            MessageBox.Show("Introduce un numero en el cuadro de texto Grados Celsius.", "Sistema de Conversion", MessageBoxButtons.OK, MessageBoxIcon.Information);
            txtCelsius.Focus();
        }
    }

    Espero te sirva


    domingo, 26 de mayo de 2019 4:42
  • hola

    Porque defines una variable global para un calculo local

            private double Convertir(double num1)
            {
               double resultado = (num1 * 9) / 5 + 32;
               return resultado;
            }

    si el calculo se realiza se devuelve como respuesta de la funcion para que la variable global?

    >>quise logre hacerlo con un If pero lo mejor seria con una funcion

    que buscas hacer en la funcion ? no entiendo que estas queriendo conseguir

    Para mi el codigo como lo tienes es correcto, solo conviertes segun tengas un dato u otro, no veo que funcion buscas

    private void btnConvertir_Click(object sender, EventArgs e)
    {
    	try
    	{
    		double celsius = 0;
    		if(double.TryParse(txtCelsius.Text, out celsius))
    		{
    			double resultado = Convertir(celsius);
    			txtFahrenheit.Text = resultado.ToString();
    			return;
    		}
    		
    		double fahrenheit = 0;
    		if(double.TryParse(txtFahrenheit.Text, out fahrenheit))
    		{
    			double resultado = InversaConversion(fahrenheit);
    			txtCelsius.Text = resultado.ToString();
    			return;
    		}
    
    	}
    	catch (Exception)
    	{
    		MessageBox.Show("Introduce un numero en el cuadro de texto Grados Celsius.","Sistema de Conversion",MessageBoxButtons.OK,MessageBoxIcon.Information);
    		txtCelsius.Focus();
    	}
    }

    podrias convertir usando el TryParse() y el valor que obtengas aplicas la formula

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Carlos_Ruiz_M lunes, 27 de mayo de 2019 14:42
    domingo, 26 de mayo de 2019 4:43
  • Antes que nada le agradezco la respuesta y me sirvió el código que escribió cambie el evento eso no me lo sabia es muy útil que cambie al momento de escribir ya tengo varias ideas para incluirlo en soluciones futuras.

    En si lo que quería hacer que cuando diera click al botón convertir

    Me saliera el resultado

    Y al dar click al mismo botón pero escribiendo en textbox de farenheit

    Me salga el resultado seria algo como a la inversa pero haciendo uso de un metodo y que en el vallan ambas operaciones dependiendo de que textbox este usando y se asigne al boton convertir,  lo siento si no me explique bien

     
    • Editado Geardarko viernes, 31 de mayo de 2019 4:50 Actualizacion
    viernes, 31 de mayo de 2019 4:44
  • Muchas gracias por su respuesta le explico que quiero hacer ya que no me explique bien pues hice uso de una variable global fue porque estoy estudiando sobre funciones solo fue algo didáctico para poder comprender un poco mejor ya que soy nuevo en el mundo de la programación pero ya decía que asi no era el uso correcto de una variable global.

    En si lo que quería hacer que cuando diera click al botón convertir

    Me saliera el resultado

    Y al dar click al mismo botón pero escribiendo en textbox de farenheit

    Me salga el resultado seria algo como a la inversa pero haciendo uso de un metodo y que en el vallan ambas operaciones dependiendo de que textbox este usando y se asigne al boton convertir,  lo siento si no me explique bien

    Saludos

    viernes, 31 de mayo de 2019 4:46
  • Hola

    Si el codigo te sivio marcalo como resuelto para que los que tengan la misma duda encuentren la solucion

    sábado, 1 de junio de 2019 1:51