2015-02-11 49 views
-2

我製作了一個只能包含數字的文本框。但是,我想將文本框中寫入的數字乘以2,然後顯示它。出於某種原因,顯示的數字始終爲0。我使用Visual Basic速成版2008文本框爲整數?

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress 
    Dim TextBox1 As Integer 

    If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Xor Asc(e.KeyChar) = 8 Xor Asc(e.KeyChar) = 44 Xor Asc(e.KeyChar) = 46 Then 
     e.Handled = True 
     MessageBox.Show(TextBox1 * 2) 
    End If 
End Sub 
+2

你是不是值分配給了當地TextBox1的整數。 – gmiley 2015-02-11 20:35:07

+2

文本框**從不**包含數字,只有文本。 「1234567890」是*數字*。打開Option Strict以瞭解有關類型的更多信息 – Plutonix 2015-02-11 20:43:52

+1

無需重新發明輪子:[NumericUpDown](https://msdn.microsoft.com/en-us/library/system.windows.forms.numericupdown%28v=vs。 110%29.aspx) – 2015-02-11 20:44:07

回答

2

您創建了一個int變量

Dim TextBox1 As Integer 

,默認爲0,然後您可以通過2

乘以
MessageBox.Show(TextBox1 * 2) 

0 * 2 = 0

你需要從文本框中的值,解析ŧ他將文本轉換爲int(int.Parse),然後乘以該值。

+1

由於這是在KeyPress事件中,TextBox1的值不會發生變化,因此您需要解析「e.KeyChar」中的值或更改爲使用TextChanged事件。 – AWinkle 2015-02-11 21:11:14

+2

@AWinkle這些事件發生時,我會向你鞠躬。可以肯定的是,OP在一個不正確的世界。 – Will 2015-02-12 13:58:30

0

也許下面的例子將有助於...

Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress 

    Select Case Convert.ToInt16(e.KeyChar) 

     Case 48 To 57 ' only allow numbers in this Case 
      MessageBox.Show(CStr(CDec(e.KeyChar.ToString) * 2)) 

     Case Else ' handle everything else here 
      e.Handled = True 
    End Select 
End Sub 
1

如果您使用的是文本框,而不僅僅是一個變量,你已經命名TextBox1中那麼簡單地使用 「messageBox.show(CINT (TextBox1.Text)* 2))」

2

試着這樣做:

Dim TextBox1 As Integer 
TextBox1 = Convert.ToInt32(TextBox1.Text)