-3

我正在尝试编写华氏到摄氏转换器,但是当我单击按钮时没有任何反应,我不知道为什么。请帮我。

它是用 C# 编写的,我有一个带有标签的表单、一个按钮、一个用于输入的文本框和一个用于输出的多行文本框。

namespace _14._6
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

        }
        private void button1_Click( object sender, EventArgs e) 
        {
            int farenhait;
            int celsius;

            farenhait = Convert.ToInt32(textbox2.Text);
            celsius = Convert.ToInt32(5.0 / 9.0 * (farenhait - 32));
            textBox1.Text = farenhait + "grader på farenhait skalan motsvarar \n " + celsius + "grader celsius";
        }
    }
}
4

3 回答 3

7

假设声明:

但是当我点击按钮时什么都没有发生......

从字面上看是真的(即在处理程序的第一行放置断点时button1_Click它没有命中断点)然后处理程序发生了一些事情。因此,转到表单设计器并再次双击该按钮以连接处理程序。

于 2013-06-05T15:13:08.870 回答
2

活动是否已上线?

单击设计器中的按钮并查看属性窗口(文件列表下方的右下角),然后单击事件按钮(看起来像一个小闪电)并向下滚动直到找到Click,然后button1_Click在此处输入'还没有在那里,这将把事件联系起来。

或者,您可以在表单的构造函数中手动添加它:

    public Form1()
    {
        InitializeComponent();
        this.button1.Click += new EventHandler(button1_Click);
    }
于 2013-06-05T15:16:07.683 回答
0

调试器到底告诉你什么是错的?

为了不偏离您最初的问题,我建议使用一种称为抽象的技术。这方面的一个例子是创建一个单独的类,它将接受完成任务的参数。

public class TemperatureConverter
{
    public void Convertion(int fahrenheit, int celsius)
    {
          // Input your conversion syntax here.
    }
}

现在有了那个特定的类可以处理转换,在您的按钮内的表单上,您可以提供必要的错误处理,然后您可以使用这些值实际调用它。

private void button1_click(object sender, EventArgs e)
{
     // Error Handling

     TemperatureConverter tc = new TemperatureConverter();
     tc.Conversion(textbox1.Text, textbox2.Text);
}

在这个很差的例子中,你必须将字符串转换为整数,否则会出错。但这是一个帮助更好地遵守面向对象的示例。

您的另一个问题:“当我单击按钮时没有任何反应”。这让我相信EventHandler已经坏了。按着这些次序:

  1. 进入设计师模式
  2. 选择您的按钮
  3. 打开属性
  4. 你会看到一个带有闪电的按钮,点击它
  5. 找到您的点击位置,并确保 EventHandler 连接正确。

这是 Sean 提供的编码方法的设计方法。

希望这会有所帮助。

于 2013-06-05T15:29:33.483 回答