2014-01-23 40 views
0

我是一個相當新的用戶VB,並想知道爲什麼下面的代碼沒有給我,我一直在尋找的答案:分配一個變量,一個TextBox一旦它已經被宣佈

Dim name, orderNumber, cityStateZip, address As String 
name = nameTextBox.text 
orderNumber = orderNumberTextBox.Text 
cityStateZip = cityStateZipTextBox.Text 
address = addressTextBox.Text 

if (name = "" OrElse orderNumber = "" OrElse cityStateZip = "" OrElse address = "") Then 
    MessageBox.Show("Please enter a Salesperson's name", "Input Error", 
         MessageBoxButtons.OK, MessageBoxIcon.Error) 
End If 

上面的代碼不會顯示MessageBox。但是,如果我'昏暗'所有的變量(名稱,OrderNumber等),它將起作用。

我想知道爲什麼這樣?

+1

將您的代碼複製並粘貼到Button_Click事件中。用空的文本框,它編譯並顯示一個MessageBox。因此,你的代碼似乎還有其他問題。 – Inisheer

+0

你能編譯代碼嗎?如果不關閉該選項,則嚴格限制您的項目屬性。 – Jade

+0

如果你這樣說,它的工作讓他們每個人都宣稱,那麼爲什麼不解決你的問題呢?或者試試'name Is Nothing'並使用'Or'而不是'OrElse' – AdorableVB

回答

1
Dim name, orderNumber, cityStateZip, address As String 
name = nameTextBox.text 
orderNumber = orderNumberTextBox.Text 
cityStateZip = cityStateZipTextBox.Text 
address = addressTextBox.Text 

是不一樣的

Dim name = nameTextBox.text 
Dim orderNumber = orderNumberTextBox.Text 
Dim cityStateZip = cityStateZipTextBox.Text 
Dim address = addressTextBox.Text 

後者使用隱式類型,或編譯器獲取從上下文的類型。根據分配給它的變量的類型,該類型是隱含的。即nameTextBox.text屬性是一個字符串,並且編譯器會將其計算出來,並且您將name變量隱式地鍵入爲String。您可以明確地鍵入它們,就像在原始代碼中一樣。然而,爲便於閱讀,您可以使用此方法:

Dim name As String = nameTextBox.text 
Dim orderNumber As String = orderNumberTextBox.Text 
Dim cityStateZip As String = cityStateZipTextBox.Text 
Dim address As String = addressTextBox.Text 

這一切都這樣說,我想不出任何理由,爲什麼你需要單獨昏暗它們(如果我理解正確的),而所有這些方法應該在你的代碼中有效地工作。

0

嘗試這樣

Dim name As String 
Dim orderNumber As String 
Dim cityStateZip As String 
Dim address As String 

orderNumber = Me.orderNumberTextBox.Text 
cityStateZip = Me.cityStateZipTextBox.Text 
address = Me.addressTextBox.Text // "Me" refers to the current form 

+0

嘿,謝謝你回答,但我知道如何使它工作,我想知道爲什麼上述方法(從操作)不起作用。 – Kato

相關問題