2014-07-21 60 views
0

我有一個條件,我有一個用戶單擊一個按鈕,它啓動一個自定義控件。基本控件是一個TabPage。類參考多個實例訪問自定義屬性

CustomControl1 cust = new CustomControl1(); 

我在我的CustomControl特性之一就是像這樣:

​​

要麼我只是沒有想到這個正常,或者我失去了一些東西。

如果我嘗試引用該控件,則會返回上一個控件值,而不是正在使用的控件。我嘗試了各種各樣的東西,只是無法讓選定的選項卡返回值。

foreach(Tabpage page in this.TabControl1.TabPages) 
{ 
if(page.name == this.TabControl1.SelectedTab.Name) 
{ 
MessageBox.Show(cust.buttonclicked); 
} 
} 

我總是得到最後一個控件添加,而不是選中的一個。感謝您的建議,謝謝。

+1

看起來你從'cust'獲得按鈕的名字,但是你把它命名爲'page'。做'MessageBox.Show(page.buttonclicked)'會發生什麼?或者直接抓住它:'((CustomControl1)this.TabControl1.SelectedTab).buttonclicked'。 –

+1

「啓動自定義控件」是什麼意思? – Groo

+0

@Neil - page.buttonclicked由於某種原因不可見。 –

回答

2

在你的循環中,你指的是cust - 但那不是你的循環變量。假設您在創建新的自定義控件時覆蓋cust

如果控件實際上是標籤,你需要參考的標籤,而不是..喜歡的東西:

var custPage = (CustomControl1)TabControl1.SelectedTab; 
MessageBox.Show(custPage.buttonclicked);     

由於TabControl1.SelectedTabTabPage型的,但是你知道它實際上是的TabPage一個子類,稱爲CustomControl1 ,你想將它投射到CustomControl1(這就是(CustomControl1)完成的)。

然後,您可以訪問您在CustomControl1中定義的成員 - 例如buttonclicked

+0

是的,我已經試過了,我知道它應該可以工作,但是這個投射失敗。我的代碼中必須有一個問題。我會標記爲答案,我會檢查我的代碼...令人沮喪。繼承:公共類CustomControl1:System.Windows.Forms.TabPage –

+0

您可以編輯您的問題,以顯示代碼您將這些自定義控件選項卡添加到選項卡控件的位置?也許這與它有關。 – Blorgbeard

+0

重新構建控件,現在正在工作。我不知道是什麼問題,但現在解決了。謝謝 –