【问题标题】:The Name 'tabControl1' does not exist in the current context - Visual Studio C#当前上下文中不存在名称“tabControl1”-Visual Studio C#
【发布时间】:2014-10-29 16:26:30
【问题描述】:

我已经搜索了一个多小时,但似乎找不到答案。

在下面的代码中,我尝试使用按钮将选项卡添加到选项卡控件。

    private void createTab_Click(object sender, EventArgs e)
    {
        string title = "TabPage " + (tabControl1.TabCount + 1).ToString();
        TabPage myTabPage = new TabPage(title);
        tabControl1.TabPages.Add(myTabPage);
    }

我得到两个相同的错误:名称“tabControl1”在当前上下文中不存在。 我觉得我必须将 tabcontrol 链接到代码,但我不确定如何。

我在以下位置找到了代码:http://msdn.microsoft.com/en-us/library/aa984280%28v=vs.71%29.aspx

感谢您的任何回答。

【问题讨论】:

  • 你没有定义 tabControl1 或者你已经在另一个方法中声明它而不是在类级别。
  • 您的选项卡控件是否存在于表单以外的另一个容器中?
  • 是的,tab 控件在 form1 中,而 addtab 代码在 form2 中
  • 感谢您的回答我决定让事情变得简单,并将所有内容保持在同一个表单上。

标签: c# winforms tabs tabcontrol


【解决方案1】:

此错误表明“tabControl1”对象不存在于与 createTab_Click 方法相同的范围内。

如果您使用的是 Windows 窗体,请单击设计器中的控件并确保其名称为 tabControl1。如果这些都不起作用,很可能是您在与主 Window 或 Form 类不同的类中编写了 createTab_Click 方法。

根据您的评论,您表示您正在尝试从您的第二个表单访问在您的第一个表单上创建的 tabControl1。这不仅有效。您必须将对第一个表单的引用传递给第二个表单,或者传递 TabControl。您要么需要在构造第二个表单(使用公共属性)后执行此操作,要么需要修改您的第二个表单以将所需的控件作为参数,如下所示:

public Form2(TabControl yourTabControl)
{
    // all ctor logic goes here
}

然后在 Form1 类中的某处实例化该 Form,如下所示:

var form2 = new Form2(tabControl1);
form2.Show();

这似乎过于复杂,特别是如果您只是使用一种表单来切换到另一个表单。这样做似乎有助于您的整体设计。如果您想将任何给定选项卡中的逻辑/内容分开,我会将您的代码分解为用户控件,并将它们作为任何给定选项卡中的主要/唯一控件。

【讨论】:

  • 我正在使用 Windows 窗体,是的,我已经检查过了:P
  • 您是否在 Form 类中定义了 createTab_Click 方法?
  • 是的,我已经制作了一个表单 (form2),并且我尝试在 tabcontrol 位于 form1 上时从 form2 添加选项卡。有没有办法做到这一点?
  • 抱歉没看到你的回复,上一条评论是针对答案的
  • @Syntastic 这个解释对你有帮助吗?
猜你喜欢
  • 2012-08-17
  • 2015-06-01
  • 2016-05-01
  • 1970-01-01
  • 2012-12-05
  • 1970-01-01
  • 1970-01-01
  • 2020-04-14
  • 1970-01-01
相关资源
最近更新 更多