在C#中传递变量

时间:2017-01-08 08:55:29

标签: c# variables

我是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,但我不确定要搜索什么。

2 个答案:

答案 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()的上下文中定义的。然后将它添加到面板中,然后它超出范围。您需要找到另一种方法来访问您的文本框...例如,通过使其成为类的成员变量。