Делать код в VB.net при вводе текста перед отображением текста - PullRequest
0 голосов
/ 06 марта 2019

У меня есть этот код в VB6:

Private Sub t_Change(Index As Integer)
Iznos = 0
For i = 1 To 4
    Iznos = Iznos + t(i).Text
Next
If CDbl(Iznos) > Label13.Caption Then
    t(Index).Text = 0
    Iznos = 0
    t(Index).SelStart = 0
    t(Index).SelLength = 1
    For i = 1 To 4
        Iznos = Iznos + t(i).Text
    Next
End If
t(0).Text = Format(Label13.Caption - CDbl(Iznos), "#,##0.00")
End Sub

Этот код работает для моего textboxes (4 из них названы: t(0),t(1),t(2),t(3)). Я пытаюсь добиться того же с VB.net, но я не могу обернуться вокруг него. Это мой код в VB.Net:

 Public Function izracunaj(ByVal s As Object)
    Dim ukupniIznos As Decimal = Decimal.Parse(maticnavalutatbox.Text)
    Dim poslaniIznos As Decimal = Decimal.Parse(s.text)
    Dim iznos As Decimal
    Dim allTextboxesPayment() As TextBox = {gotovinaTbox, karticeTbox, ostaloTbox, ziralnoTbox}
    For Each kontrola As TextBox In allTextboxesPayment
        iznos = iznos + Decimal.Parse(kontrola.Text)
    Next
    If CDbl(iznos) > ukupniIznos Then
        s.Text = 0
        iznos = 0
        For Each kontrola As TextBox In allTextboxesPayment
            iznos = iznos + Decimal.Parse(kontrola.Text)
        Next
    End If
    gotovinaTbox.Text = Format(ukupniIznos - CDbl(iznos), "#,##0.00")
End Function

Но если я вызову свою функцию так:

Private Sub ziralnoTbox_TextChanged(sender As Object, e As TextChangedEventArgs) Handles ziralnoTbox.TextChanged
izracunaj(sender)
End Sub

Это не работает, потому что моя функция izracunaj уже имеет входное значение ziralnoTbox. Как я могу достичь такой же функциональности с vb.net, как в vb6

1 Ответ

0 голосов
/ 06 марта 2019

Если я правильно смотрю на это, вы можете использовать событие TextChanged.

Private Sub TextBox1_TextChanged(sender As Object,
                                     e As EventArgs) Handles gotovinaTbox.TextChanged,
                                                            karticeTbox.TextChanged, 
                                                            ostaloTbox.TextChanged,
                                                            ziralnoTbox.TextChanged
    Dim ukupniIznos As Decimal = Decimal.Parse(maticnavalutatbox.Text)
    Dim poslaniIznos As Decimal = Decimal.Parse(s.text)
    Dim iznos As Decimal
    Dim allTextboxesPayment() As TextBox = {gotovinaTbox, karticeTbox, ostaloTbox, ziralnoTbox}
       'gotovinaTbox, quita esto?
    For Each kontrola As TextBox In allTextboxesPayment
        iznos = iznos + Decimal.Parse(kontrola.Text)
    Next
    If CDbl(iznos) > ukupniIznos Then
        s.Text = 0
        iznos = 0
        For Each kontrola As TextBox In allTextboxesPayment
            iznos = iznos + Decimal.Parse(kontrola.Text)
        Next
    End If
    gotovinaTbox.Text = Format(ukupniIznos - CDbl(iznos), "#,##0.00")
End Sub
...