无法访问其他C#表单中的组件

时间:2017-07-15 10:12:54

标签: c# .net forms label tabcontrol

我有一个包含TabControl的主窗体。新窗体作为TabControl中的选项卡添加。我无法更改当前活动选项卡或从TabControl不是表单的表单中关闭选项卡。我尝试访问的所有组件都是Public。

以下是我用来更改标签的代码:

Main mainForm = new Main();
mainForm.tcMain.SelectTab(mainForm.tpHome);

即使我尝试将其更改为第一个标签的索引,它也不起作用。

我还有一个主要形式的标签,我试图改变其他形式:

Main mainForm = new Main();
mainForm.labelStatus.Text = "Refreshed";

如果它有任何帮助,这就是我试图访问主表单的表单如何被称为

Table tableForm = new Table();
tableForm.TopLevel = false;
TabPage tableTab = new TabPage(tableForm.Text);
tcMain.TabPages.Add(tableTab);
tableForm.panelTable.Parent = tableTab;
tableForm.Parent = tableTab;
tcMain.SelectTab(tableTab);
tableForm.Show();

1 个答案:

答案 0 :(得分:1)

如果为你修改的每个属性创建一个Main的新实例,你实际上创建了很多窗体,它们彼此没有关系,它们只是坐在内存中,直到它们显示给用户。您需要的是对应用程序开始时创建的实际主窗体的引用。为此,将要修改的控件设置为公共控件,如下所示。

主要班级全球:

static public Main instance;

主类 Main_Load()方法:

instance = this;

在所有其他表单中,只需访问Main.instance等主表单实例。所以这个

Main mainForm = new Main();
mainForm.labelStatus.Text = "Refreshed";

将成为

Main.instance.labelStatus.Text = "Refreshed";

这里重要的是将要在主窗体中修改的所有控件的访问修饰符设置为public