2014-04-29 80 views
0

我已經看到了很多線程,但我幾乎失去了。參考表格控件使用變量

對於下面的例子,我有三個組合框(cbx_example0,cbx_example1,cbx_example2)分別位於三個TabPages(索引0,1,2)上。我想根據所選TabPage上的ComboBox設置變量myVariable的值。 但是,我似乎無法弄清楚如何使用變量引用ComboBox。它似乎應該是直截了當的,但我猜不是。不管我做什麼,我都會得到一個NullReferenceException。

函數來獲得的TabPage索引號碼(在這個例子中返回0)

Function getTabIndex() 
    Dim currentTabIndex As Int32 = frm_Main.TabControl1.SelectedIndex 
    Return currentTabIndex 
End Function 

嘗試1來指代組合框具有可變

Dim myVariable As String   
    Dim i As Integer = getTabIndex 
    myVariable = frm_Main.Controls("cbx_example" & i).Text 

嘗試2指組合框具有可變

Dim cbx_example0 As New ComboBox 
    Dim i As Integer = getTabIndex() 
    Dim name As String = "cbx_example" & i.ToString 
    cbx_example = frm_Main.Controls.Item(name) 
    myVariable = cbx_example.Text 

回答

2

你的問題是你認爲你的cbo位於窗體上,w實際上它是在tabpage。取而代之的

cbx_example = frm_Main.Controls.Item(name) 

使用(例如)

cbx_example = frm_Main.TabPage1.Controls.Item(name) 

請記住,你的組合很可能不是tab本身,而是對tabpage

在另一方面,我認爲沒有必要getTabIndex()。另一種獲得任何形式層級控制的方法是使用

form.Controls.Find(key, searchAllChildren)