Hallo Liebe Gemeinde,
ich hab mal wieder ein Problem. Ich sitze an einer Aufgabe in der ich Kontobuchungen simulieren soll.
Soweit funktioniert auch alles, nur das RaiseEvent wird nicht ausgeführt, bitte hilft mir und gebt mir ein Tip warum das so ist.
Der Code:
Imports System.Console
Imports System.Windows.Forms
Class Konto
Private m_Kontonr As String
Private m_Dispo As Decimal
Private m_Kontostand As Decimal
Public Event DispoGrenze(ByVal sender As Object, ByRef Abbrechen As Boolean)
Sub New(ByVal Kontonr As String, _
ByVal Dispo As Decimal)
m_Kontonr = Kontonr
m_Dispo = Dispo
End Sub
ReadOnly Property Kontonr As String
Get
Kontonr = m_Kontonr
End Get
End Property
ReadOnly Property Kontostand As Decimal
Get
Return m_Kontostand
End Get
End Property
ReadOnly Property Verfügbar As Decimal
Get
Verfügbar = m_Kontostand
End Get
End Property
Sub Anzeigen()
WriteLine("Kontonr:{0,8}, Kontostand:{1,8}, Disporahmen:{2,8}", m_Kontonr, m_Kontostand, m_Dispo)
End Sub
Public Function Buchung(ByVal Betrag As Decimal) As Decimal
Dim ks As Decimal
Buchung = ks
ks = Kontostand + Betrag
m_Kontostand = ks
If ks < m_Dispo Then
Dim Abbrechen As Boolean = True
RaiseEvent DispoGrenze(Me, Abbrechen) 'hier komme ich nicht weiter
WriteLine("Zu wenig geld")
End If
End Function
End Class
Public Class Test
Shared WithEvents k As Konto
Shared Sub Main()
Dim k As New Konto("123", "-3000")
k.Anzeigen()
ReadLine()
k.Buchung(2000)
k.Anzeigen()
ReadLine()
k.Buchung(-4000)
k.Anzeigen()
ReadLine()
k.Buchung(-2000)
k.Anzeigen()
ReadLine()
End Sub
Shared Sub k_DispoGrenze(ByVal sender As Object, ByRef Abbrechen As Boolean) Handles k.DispoGrenze
Dim s As String = "Der gewünschte Betrag kann nicht abgehoben werden," _
& "da der Dispositionsrahmen überschritten wurde." & vbCrLf & vbCrLf _
& "Sie können noch" & CType(sender, Konto).Verfügbar & "Euro" & vbCrLf _
& "abheben. " & vbCrLf _
& "Betrag abheben (JA), Abbrechen (NEIN)."
Dim Antwort As DialogResult
Antwort = MessageBox.Show(s, "Buchung", MessageBoxButtons.OKCancel, MessageBoxIcon.Error, MessageBoxDefaultButton.Button2)
If Antwort = DialogResult.OK Then
Abbrechen = False
End If
End Sub
End Class
Danke schon mal und Grüße
Andrea