1

我想编写一个程序,一旦单击 Button3,它将创建一个新的 TextBox。由于某种原因,C# 无法识别 txtRun。它说名称 txtRun 在当前上下文中不存在。这是我的代码:

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

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            textBox1.Text += "a";
        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Text += "b";
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void button3_Click(object sender, EventArgs e)
        {

          txtRun = new TextBox();
          txtRun.Name = "txtDynamic";
          txtRun.Location = new System.Drawing.Point(20, 18);
          txtRun.Size = new System.Drawing.Size(200, 25);
          // Add the textbox control to the form's control collection         
              this.Controls.Add(txtRun);
      }

        }



        }
    }
}
4

5 回答 5

3

在使用它之前,您需要在 C# 中声明一个变量。

使用任一

TextBox txtRun = new TextBox();

或使用隐式类型变量:

var txtRun = new TextBox();
于 2013-06-05T02:19:19.703 回答
2

也许问题是你没有声明类型

var txtRun = new TextBox();
于 2013-06-05T02:36:28.800 回答
1

尝试

  var txtRun = new TextBox();
  txtRun.Name = "txtDynamicTemp";
  txtRun.Location = new System.Drawing.Point(20, 18);
  txtRun.Size = new System.Drawing.Size(200, 25);
  // Add the textbox control to the form's control collection         
      this.Controls.Add(txtRun);
于 2015-10-07T18:38:50.703 回答
0

问题:

由于某种原因,C# 无法识别 txtRun。它说名称 txtRun 在当前上下文中不存在。

回答:

在你的声明中

txtRun = new TextBox();

您已经创建了一个变量 txtRun 但没有给它一个类型。就像创建字符串或 int TextBox 一样,您必须在 txtRun 之前使用类 TextBox 的名称

TextBox txtRun = new TextBox();

您也可以用 var 替换 TextBox 一词,让编译器为您猜测。

这将解决您的直接问题。

然而,这里真正的问题是,如果用户要无限次单击按钮,您将创建无限数量的文本框。此外,您可能没有意识到,但第二次按下按钮时,它会在原始文本下方放置一个 TextBox,因此您可能没有意识到,因为您输入的文本将保留,但我向您保证,您正在创建一堆 TextBox,即不好。我不确定你正在完成什么,具体取决于你的场景,你可以通过几种不同的方式来解决这个问题。

场景 1(您只需要 1 个动态创建的 TextBox)

创建一个变量来检查 TextBox 是否已经创建,所以它只创建一个。*注意你真的应该在你的点击方法之外创建或调用文本框,因为你会失去它的范围。

场景2(你想动态创建超过1个TextBox)

创建一个文本框列表或数组,以便更轻松地跟踪动态创建的文本框新的文本框。*请注意,您仍然应该以某种方式在 click 方法之外真正创建或调用 TextBox,因为您将失去它的范围。

如果您需要,请告诉我,无论情况如何,我都会更详细地介绍。

于 2013-06-05T03:31:36.570 回答
0

除了给出的答案并查看您提供的代码片段之外,您似乎还有太多的右花括号。更具体地说,最后两个 - 你不需要那些。

于 2013-06-05T02:49:52.967 回答