无法访问其他 C# 形式的组件

Trouble accessing components in other C# forms

我有一个包含 TabControl 的主窗体。新窗体作为选项卡添加到 TabControl 中。我在更改当前活动选项卡或关闭非 TabControl 窗体的选项卡时遇到问题。我尝试访问的所有组件都是 Public.

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

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

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

我在主窗体中也有一个标签,我正尝试从其他窗体更改为这样:

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();

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

主要 Class 全局:

static public Main instance;

主要ClassMain_Load()方法:

instance = this;

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

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

会变成

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

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