Hallo zusammen,
habe ein Problem mit der Ereignisauslösung bei meinem Programm. Es soll ein Ereignis bei überschreiten des Members m_dispo ausgelöst werden (DispoGrenze).
Es geht darum, dass ein Konto erzeugt und mit Werten belegt wird. Sollte bei der Argumentübergabe (Werte) der Dispo (Dispo = -3000)überschritten werden z.B. -4000 so ist das Ereignis DispoGrenze auszulösen und dementsprechend eine Messagebox mit Meldung an den Benutzer auszulösen.
Es soll auch eine Meldung ausgegeben werden, wenn bei der zweiten Buchung der Dispo überschritten wird. Das ganze muss von der Sub Buchung kommen, die macht die Arbeit.
Steh seit einer Woche auf dem Schlauch und hab schon etliche versuche unternommen doch alle schlugen fehl.
Ich vermute die Fehler in den rot markierten Bereichen.
Ich hoffe Ihr könnt mir mit Rat und vielleicht Tat zur Seite stehen.
Vielen Dank schon mal im Voraus
Hier der Code:
Imports System.Console
Imports System.Windows.Forms
Public Class Konto
Private m_Kontonr As String
Private m_Kontostand As Decimal
Private m_Dispo As Decimal
Event DispoGrenze(ByVal Sender As Object, ByRef cancel As Object)
Sub New(ByVal KontoNr As String, ByVal Kontostand As Decimal, ByVal Dispo _
As Decimal) 'Konstruktor
m_Kontonr = KontoNr
m_Kontostand = Kontostand
m_Dispo = Dispo
End Sub
Public ReadOnly Property KontoNr() As String
Get
KontoNr = m_Kontonr
End Get
End Property
Public ReadOnly Property Kontostand() As Decimal
Get
Kontostand = m_Kontostand
End Get
End Property
Public Property Dispo() As Decimal
Get
Dispo = m_Dispo
End Get
Set(ByVal value As Decimal)
m_Dispo = value
End Set
End Property
Sub Buchung(ByVal Betrag As Decimal)
Dim Abbrechen As Boolean = False
If Betrag < m_Dispo Then
RaiseEvent DispoGrenze(Me, Abbrechen)
If m_Kontostand < m_Dispo Then
RaiseEvent DispoGrenze(Me, Abbrechen)
End If
Else
m_Kontostand = m_Kontostand + (Betrag)
End If
End Sub
Sub Ausgabe() 'Ausgabe der Konten
WriteLine("Kontonr: {0,-10} Kontostand: {1,4} Disporahmen: {2,8}", _
m_Kontonr, m_Kontostand, m_Dispo)
End Sub
End Class
Public Class Test
Private Shared WithEvents k As Konto
Shared Sub Main()
Dim k As Konto
k = New Konto("123", -5000, -3000)
k.Ausgabe()
k.Buchung(-10000)
k.Ausgabe()
k.Buchung(-2000)
k.Ausgabe()
ReadLine()
End Sub
Private Shared Sub Buchung_DispoGrenze(ByVal Sender As Object, ByRef cancel _
As Object) Handles Buchung.DispoGrenze
MessageBox.Show("Test", "Text", MessageBoxButtons.OK, _
MessageBoxIcon.Error)
End Sub
End Class |