【问题标题】:Passing variables in C#在 C# 中传递变量
【发布时间】:2017-05-22 17:02:54
【问题描述】:

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

【问题讨论】:

  • I'm not sure what to search for - 尝试“可变范围”。
  • 按钮tb的声明:TextBox tb = new TextBox();是方法 Form1_Load 的语言环境。您必须在类中将 tb 声明为全局
  • 当您收到此类错误消息时,只需搜索省略了您的标识符的异常消息即可。例如。搜索 Error CS0103 The name does not exist in the current context 会找到很多关于这个问题的答案。

标签: c# variables


【解决方案1】:

这是范围问题。您在方法中声明 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);
}

【讨论】:

    【解决方案2】:

    您的tb 变量是在Form_Load() 的上下文中定义的。然后将其添加到面板中,然后超出范围。您需要找到另一种方法来访问您的文本框...例如将其设为类的成员变量。

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 2010-11-03
      • 2011-07-27
      • 1970-01-01
      • 2013-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多