2012-02-01 6 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

짧은 대답은 아니오입니다.

긴 대답은 예입니다.

"DefaultValue"라는 속성을 추가하여 TextBox 클래스에서 상속 한 자신 만의 텍스트 상자를 만듭니다. 기본값에 대한 논리를 추가하는 적절한 속성/메서드를 재정의합니다.

그런 다음 표준 텍스트 상자를 텍스트 상자로 바꾸기 만하면됩니다.

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 

기본적으로 매번 당신의 텍스트 상자의 텍스트가 변경 될 때, 그것은 검사를 null 인 경우는, textbox의 값을 「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 
관련 문제