Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Probleme bei Ereignisauslösung in VB.NET

Empfohlene Antworten

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


   [COLOR="Red"] 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[/COLOR]

    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 New Konto("123", -8000, -3000)

        k.Ausgabe()

        k.Buchung(-10000)

        k.Ausgabe()

        k.Buchung(-2000)

        k.Ausgabe()

        ReadLine()

    End Sub

    [COLOR="Red"]Private Shared Sub Konto_DispoGrenze(ByVal Sender As Object, ByRef cancel As Object) Handles k.DispoGrenze[/COLOR]

        MessageBox.Show("Test", "Text", MessageBoxButtons.OK, MessageBoxIcon.Error)

    End Sub

End Class

Hallo Thammes,

dein Fehler liegt in folgender Zeile:

Dim k As New Konto("123", -8000, -3000)
Damit hast du jetzt zwei Variablen mit Namen k. Einmal die Klassenvariable WithEvents und dann die in deiner Funktion. In der Funktion, in der du die Buchungen aufrufst (Main) benutzt du nur die lokale k-Variable, während sich das die Event-Funktion an das DispoGrenze-Event der Klassenvariable k dranhängt. Das Ereignis wird also völlig korrekt ausgelöst, es gibt nur keine Abonenten. Des Rätsels Lösung:
 k  = New Konto("123", -8000, -3000)

So initialisierst du die Variable k nur, aber deklarierst keine Neue.

Haa, ich werd verrückt, :upps jetzt gehts. Oh mann so ein banaler Fehler.

Auf alles wäre ich gekommen nur auf das nicht.

Vielen Vielen Dank du rettest mir meinen Tag!!

Caio Thammes

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Konto

Navigation

Suchen

Suchen

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.