前言:这是游戏的代码。
在我的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 :(得分: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