当前上下文中不存在名称 'TXTF'

The name 'TXTF' does not exist in the current context

我是 C# 的新手,目前我正在尝试制作 2 个简单的天气文本框,一个以摄氏度为单位显示温度,另一个文本框以华氏度为单位显示温度,我想做的是制作用户在任何文本框中输入温度,另一个将计算并将其转换为摄氏度和华氏度,反之亦然,

但我不断收到错误消息: “名称‘TXTF’在当前上下文中不存在” “名称‘TXTC’在当前上下文中不存在”

这是我的代码:-

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace MainWeb2
{
    public partial class Weather : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void TextBox1_TextChanged(object sender, EventArgs e)
        {
            String C = TextBox1.Text;
            int TXTC = Int32.Parse(C);
            string TXTC1 = TXTC.ToString();
            TXTC = (TXTF - 32) * (5 / 9);
        }

        protected void TextBox2_TextChanged(object sender, EventArgs e)
        {
            String F = TextBox2.Text;
            int TXTF = Int32.Parse(F);
            string TXTF1 = TXTF.ToString();
            TXTF = (TXTC) * (9 / 5) + 32;
        }
    }
}

我该怎么办?

您正在各自的其他 TextBox_Changed 回调中使用 TXTCTXTF,即使它没有在该函数中定义。

要解决此问题,您需要在函数外部声明 TXTCTXTF,以便它们都可以访问这些值。

namespace MainWeb2 {
    public partial class Weather : System.Web.UI.Page {
        // Declare PlaceHolders for TextBoxes with default value of 1.
        int TXTC = 1;
        int TXTF = 1;

        protected void TextBox1_TextChanged(object sender, EventArgs e) {
            ...
            Int32.TryParse(C, out TXTC);
            ...
        }

        protected void TextBox2_TextChanged(object sender, EventArgs e) {
            ...
            Int32.TryParse(F, out TXTF);
            ...
        }
    }
}

你的看起来不错。唯一的部分是您需要设置两个文本框 postback = true.

这两个文本框的设置:

唯一缺少的部分是您需要设置两个文本框以触发 post 返回。

我想你也可以在表格上放一个按钮,输入值然后点击计算按钮。

但是,对于两个文本框,您需要设置 postback = true。

你会写代码吗?那么,你可以使用这个:

{
int TXTC;

TXTC = Int(TextBox1.Text);

TextBox2.Text = (TXTC - 32) * (5 / 9);
}

对于文本框 2,这个:

{
int TXTC;

TXTC = Int(TextBox2.Text);

TextBox1.Text = (TXTC) * (9 / 5) + 32;
}

因此系统会为您将数据类型“转换”为文本。事实上,你甚至可以这样做,而且它会起作用:

第一个:

TextBox2.Text = (TextBox1.Text - 32) * (5 / 9);

TextBox1.Text = TextBox2.Text * (9 / 5) + 32;

因此,与原生 C++ 不同,.net 为您做了很多自动转换。

而如果将每个文本框的格式设置为数字(此设置)

然后用户只能输入数字 - 因此通过这样做可以提供一些额外的类型检查。 (用户将只能输入数字 - 因此您不需要所有类型转换代码。

总而言之?您的代码将会并且应该工作。只是缺少自动 post 返回设置。