-1

我在 TextChanged 事件处理程序中获取文本框的文本值时遇到问题。

我有以下代码。(简化)

public float varfloat;

private void CreateForm()
{
    TextBox textbox1 = new TextBox();
        textbox1.Location = new Point(67, 17);
        textbox1.Text = "12.75";
        textbox1.TextChanged +=new EventHandler(textbox1_TextChanged);
}

private void textbox1_TextChanged(object sender, EventArgs e)
    {
         varfloat = float.Parse(textbox1.Text);
    }

我收到以下错误:'名称 textbox1 在当前上下文中不存在'。

我可能在某个地方犯了一个愚蠢的错误,但我是 C# 新手,希望能得到一些帮助。

提前致谢!

4

4 回答 4

2

在. textBox1_ 该变量仅存在于该方法中。CreateForm

三个简单的选项:

  • 使用 lambda 表达式在 内创建事件处理程序CreateForm

    private void CreateForm()
    {
        TextBox textbox1 = new TextBox();
        textbox1.Location = new Point(67, 17);
        textbox1.Text = "12.75";
        textbox1.TextChanged += 
            (sender, args) => varfloat = float.Parse(textbox1.Text);
    }
    
  • 转换senderControl并使用它:

    private void textbox1_TextChanged(object sender, EventArgs e)
    {
        Control senderControl = (Control) sender;
        varfloat = float.Parse(senderControl.Text);
    }
    
  • 改为textbox1实例变量。如果您想在代码的其他任何地方使用它,这将很有意义。

哦,请不要使用公共领域:)

于 2012-09-17T16:38:00.347 回答
1

试试这个:

private void textbox1_TextChanged(object sender, EventArgs e)
{
     varfloat = float.Parse((sender as TextBox).Text);
}
于 2012-09-17T16:37:52.967 回答
0

您尚未将文本框控件添加到表单中。

它可以做为

TextBox txt = new TextBox();
txt.ID = "textBox1";
txt.Text = "helloo";
form1.Controls.Add(txt);
于 2012-09-17T16:40:53.750 回答
0

在类级别范围而不是函数范围定义textbox1外部 CreateForm(),以便它可用于textbox1_TextChanged事件。

TextBox textbox1 = new TextBox();

private void CreateForm()
{    
        textbox1.Location = new Point(67, 17);
        textbox1.Text = "12.75";
        textbox1.TextChanged +=new EventHandler(textbox1_TextChanged);
}

private void textbox1_TextChanged(object sender, EventArgs e)
{
     varfloat = float.Parse(textbox1.Text);
}
于 2012-09-17T16:37:51.600 回答