文本框中的默认号码

时间:2012-02-01 13:21:57

标签: vb.net textbox

前言:这是游戏的代码。

在我的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个文本框中的一个中提取信息。

我的问题是:是否可以让每个文本框都有一个“默认”数字,当它为空时放入文本框。

需要对所有文本框执行此操作,因此首选循环或非特定代码切片。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

在设计器中你可以将文本值设置为“0”,然后在textchanged事件处理程序中执行以下操作:

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

基本上每次更改文本框的文本时,都会检查它是否为null,如果是,则将textbox的值设为“0”。

希望这有帮助。

答案 2 :(得分: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