微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决当前上下文中不存在名称“ TXTF”

我是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;
        }
    }
}

我该怎么办?

解决方法

您正在各自的其他TXTC回调中使用TXTFTextBox_Changed,即使在该函数中未定义也是如此。

要解决此问题,您需要在函数外部声明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。

两个文本框的此设置:

enter image description here

唯一缺少的部分是您需要同时设置两个文本框才能发回帖子。

您也可以在表单上放置一个按钮,键入值,然后单击计算按钮。

但是,对于两个文本框,您都需要设置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为您完成了许多自动转换。

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

enter image description here

然后,用户只能键入数字-因此,这样做可以提供一些附加的类型检查。 (用户只能输入数字-因此,您无需输入所有类型的强制转换代码。

总而言之?您的代码将并且应该起作用。只是缺少自动回发设置。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。