我是C#的新手。我以为我知道一些C#,但显然不是。
作为一个例子,我使用一个带有按钮和自定义文本框的非常简单的表单。单击该按钮应该会给我自定义文本框的内容,但我正在
错误CS0103当前上下文中不存在名称“tb”
我已经尝试了所有可能的选项,但没有运气。
当我使用工具箱中的静态文本框(名为tb
)时,它可以正常工作而不会出现任何错误。以下是我的代码:
public Form1()
{
InitializeComponent();
}
public void Form1_Load(object sender, EventArgs e)
{
TextBox tb = new TextBox();
tb.Dock = System.Windows.Forms.DockStyle.Fill;
tb.Location = new System.Drawing.Point(600, 430);
tb.Multiline = true;
panel2.Controls.Add(tb);
}
public void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(tb.Text);
}
我曾尝试搜索Google和Stack Overflow,但我不确定要搜索什么。
答案 0 :(得分:4)
这是范围问题。您在方法中声明tb
,因此在方法之外它不存在。您想在类本身的方法之外声明tb
:
TextBox tb;
public Form1()
{
InitializeComponent();
}
public void Form1_Load(object sender, EventArgs e)
{
tb = new TextBox();
tb.Dock = System.Windows.Forms.DockStyle.Fill;
tb.Location = new System.Drawing.Point(600, 430);
tb.Multiline = true;
panel2.Controls.Add(tb);
}
public void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(tb.Text);
}
答案 1 :(得分:2)
您的tb
变量是在Form_Load()
的上下文中定义的。然后将它添加到面板中,然后它超出范围。您需要找到另一种方法来访问您的文本框...例如,通过使其成为类的成员变量。