2012-02-01 61 views
0

前言:這是遊戲的代碼。文本框中的默認數字

在對我的VB程序我有大量的文本框的形式之一,這個問題是關於下面的代碼:

Total_Gold.Text = (WoodPrice * TxtBoxWoodUnits.Text) + (MagicWoodPrice * TxtBoxMagicWoodUnits.Text) + (Pheonix_EggsPrice * TxtBoxPheonixEggsUnits.Text) + (MetalPrice * TxtBoxMetalUnits.Text) + (Dwarven_GemsPrice * TxtBoxDwarvenGemsUnits.Text) + (LeatherPrice * TxtBoxLeatherUnits.Text) + (Dragon_ScalesPrice * TxtBoxDragonScalesUnits.Text) + (Raw_SilverPrice * TxtBoxRawSilverUnits.Text) + (Raw_GoldPrice * TxtBoxRawGoldUnits.Text) + (DownPrice * TxtBoxDownUnits.Text) + (CottonPrice * TxtBoxCottonUnits.Text) + (QuicksilverPrice * TxtBoxQuicksilverUnits.Text) + (StonePrice * TxtBoxStoneUnits.Text) + (CoalPrice * TxtBoxCoalUnits.Text) + (ThreadPrice * TxtBoxThreadUnits.Text) + (FurPrice * TxtBoxFurUnits.Text) 

這是包含在一個計時器事件,顯示多少會花費玩家購買所有物品。這按預期工作,直到文本框爲空。每個「部分」從16個文本框中的一箇中提取信息。

我的問題是這樣的:是否有可能讓每個文本框有一個「默認」數字,當它是空的時候被放入一個文本框中。

這是所有文本框都需要完成的,所以無論是循環還是非特定的代碼片段都是首選。

回答

0

簡短的回答是否定的。

長的答案是肯定的,你可以。

創建自己的文本框,從TextBox類繼承,添加名爲「DefaultValue」的屬性覆蓋相應的屬性/方法添加默認值的邏輯。

然後只需用您的文本框替換標準文本框。

我希望你也驗證了輸入,因爲如果TxtBoxWoodUnits.Text =「Foo」並且你將它乘以4.5,它不會很漂亮。您也應該爲隱式轉換啓用「錯誤通知」,以便在嘗試按數字乘以字符串時收到編譯器警告。

Public Class MyTextBox 
    Inherits TextBox 

    Public Property DefaultValue As String 


    Public Overrides Property Text As String 
     Get 
      If String.IsNullOrWhiteSpace(MyBase.Text) Then 
       Return DefaultValue 
      Else 
       Return MyBase.Text 
      End If 
     End Get 
     Set(ByVal value As String) 
      MyBase.Text = value 
     End Set 
    End Property 

End Class 
0

那麼在設計,你可以把文本值設爲「0」,然後在TextChanged事件處理程序做到這一點:

If TxtBoxWoodUnits.Text = "" Then 
    TxtBoxWoodUnits.Text = "0" 
EndIf 

基本上每次你的文本框的文本改變時,它會檢查如果它爲空,則如果是,則使文本框的值爲「0」。

希望這會有所幫助。

0
Private Sub btn_generate_text_array_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click ' will generate a group of 10 text boxes 
    Dim j As Integer 
    For j = 0 To 10 
     ReDim Preserve c(j) 
     c(j) = New TextBox 
     c(j).Name = "txt" & j 
     c(j).Parent = Me 
     c(j).Top = j * c(j).PreferredHeight + 2 
     c(j).Tag = j 
     c(j).Visible = True 
    Next 
End Sub 

Private Sub c_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 
    For j = 0 To 10 'loop will load 0 to all the text boxes having ""(null) values 
     If c(j).Text = "" Then 
      c(j).Text = "0" 
     End If 
    Next 
End Sub