2017-07-15 28 views
-1

我有一個包含TabControl的主表單。新窗體在TabControl中添加爲選項卡。我無法更改當前活動選項卡或關閉非TabControl形式的窗體中的選項卡。我試圖訪問的所有組件都是Public。無法訪問其他C#表單中的組件

這裏是我用來更改標籤代碼:

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

只需創建一個屬性來存儲Table的'Form'和一個構造函數,接受'Form'作爲參數並傳遞你的Main'Form'。然後,您將通過該屬性更改當前選項卡 –

+1

等待,對於要更改的每個屬性,您都要創建一個新的「Main」實例?難怪他們不會改變。 –

+0

我想創建一個屬性來存儲主,但我有點迷路。是的,我正在創建一個Main的新實例。我不知道如何去做。 – Lampa

回答

1

如果你每次修改時,實際上是創建多個窗口形式財產創造的Main一個新的實例,他們有沒有關係的對方,他們只是坐在內存中,直到它們被顯示給用戶。你需要的是對在應用程序開始時創建的實際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控件的訪問修飾符。

+0

這很有效,非常感謝! – Lampa