将计算出的数字从文本框1发送到文本框2

时间:2014-10-12 15:43:18

标签: c# visual-studio textbox

好的我正在尝试输出一个数字到textbox2(CalculatedCelsiusNumber)。单击button1后,输出编号将来自textbox1(FahrenheitNumber),并将华氏温度变为摄氏温度。我能够在控制台应用程序中编写此代码没有问题但是当我尝试使用Windows窗体时,我也无法做到。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TemperatureConversion
{
    public partial class TemperatureConversionGYG : Form
    {

      // Varable for the calculatedCelsius 
      float calculatedCelsius;

       // Varable for the Fahrenheit entered in textbox1.
       float originalFahrenheit;


    public TemperatureConversionGYG()
    {
        InitializeComponent();


    }


    public void button1_Click(object sender, EventArgs e)
    {
       // When this button is clicked it will use the number the user inputs in textbox1(FahrenheitNumber) to 
       // calculate the degree celsius and output it in textbox2. 
        calculatedCelsius = (originalFahrenheit - 32) / 9 * 5;

       //Code here to send the calculatedCelsius to textbox2



    }

    public void textBox1_TextChanged(object sender, EventArgs e)

    {

        // originalFahrenheit that the program will read when user inputs a number

        originalFahrenheit = Convert.ToInt32(textBox1.Text);

    }


    public void textBox2_TextChanged(object sender, EventArgs e)
    {


    }

    private void TemperatureConversionGYG_Load(object sender, EventArgs e)
    {

    }
}

}

1 个答案:

答案 0 :(得分:5)

一旦你计算了价值:

calculatedCelsius = (originalFahrenheit - 32) / 9 * 5;

然后,您希望显示值。这可能是一件简单的事情:

CalculatedCelsiusNumber.Text = calculatedCelsius.ToString();

有可能,因为您点击了一个按钮来调用计算,您可能根本不想要那些TextChanged处理程序。只需调用逻辑并在单击按钮时显示结果。

我猜想,当用户输入值时,可以通过从一个盒子到另一个盒子的计算来获得更强大的功能。在这种情况下,您希望在各自的单独函数中有两个等式(C到F和F到C),并在文本发生变化时调用相应的函数。例如,F到C函数可能是:

private float FahrenheitToCelcius(float fahrenheit)
{
    return (fahrenheit - 32F) / 9F * 5F;
}

然后在TextChanged处理程序中你可以这样做:

public void FahrenheitNumber_TextChanged(object sender, EventArgs e)
{
    var fahrenheit = 0F;
    if (float.TryParse(FahrenheitNumber.Text, out fahrenheit))
        CelsiusNumber.Text = FahrenheitToCelcius(fahrenheit).ToString();
}

我不记得是否明确设置.Text属性会调用TextChanged事件。如果是的话,你可能想要使用不同的事件(例如Blur),这样就不会创建一个无限循环,两个文本框一遍又一遍地相互设置。