Ereignisse definieren

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Mad Andy.

    Ereignisse definieren

    Hallo!
    Ich muss folgendes machen:

    1. Schreiben Sie eine Klasse ClsNumberField, die von System.Windows.Forms.TextBox
    abgeleitet ist. Definieren Sie in der Klasse die Attribute _zahl, _minValue und _maxValue,
    vom Typ integer. Fügen Sie weiterhin die Eigenschaften Zahl, MinValue und MaxValue
    hinzu, wobei die Eigenschaften jedoch vom Typ string sein sollen!

    2. Definieren Sie in der Klasse ClsNumberField ein Ereignis InputErrorEvent mit den
    Parametern sender vom Typ Object, eingabewert vom Typ String und fehlertext
    vom Typ String.
    3. Schreiben Sie in der Klasse ClsNumberField eine Methode NumberChecker, die überprüft,
    ob ein ihr übergebener Parameter vom Typ String eine gültige Zahl ist. Die Funktion gebe true
    zurück, wenn der Parameter in eine Zahl vom Typ integer konvertiert werden kann. (Hinweis:
    Mit Hilfe der Fehlerbehandlung kann die Funktionalität programmiert werden. Überlegen Sie sich,
    wie die Eingabe von Dezimalzahlen behandelt werden soll.)

    Ich denke, ich habe 1, aber 2 versteh ich nicht und 3, naja, bin ich nur zum Methodengerüst vorgedrungen. Hier mal mein Versuch:

    VB.NET-Quellcode

    1. Public Class ClsNumberField
    2. Inherits System.Windows.Forms.TextBox 'ableiten der KLasse von System.Windows.Forms.TextBox
    3. #Region "Private Variablen"
    4. Private _zahl As Integer 'Definition der Attribute als integer
    5. Private _minValue As Integer
    6. Private _maxValue As Integer
    7. #End Region
    8. #Region "Properties"
    9. Public Property Zahl() As String
    10. Get
    11. Return _zahl
    12. End Get
    13. Set(ByVal value As String)
    14. _zahl = value
    15. End Set
    16. End Property
    17. Public Property minValue() As String
    18. Get
    19. Return _minValue
    20. End Get
    21. Set(ByVal value As String)
    22. _minValue = value
    23. End Set
    24. End Property
    25. Public Property maxValue() As String
    26. Get
    27. Return _maxValue
    28. End Get
    29. Set(ByVal value As String)
    30. _maxValue = value
    31. End Set
    32. End Property
    33. #End Region
    34. WithEvents InputErrorEvent As String
    35. WithEvents fehlertext As String
    36. Private Sub NumberChecker(ByVal sender As Object, ByVal e As EventArgs) _
    37. Handles ???
    38. End Sub
    39. End Class


    Könnt Ihr mir bite auf die Sprünge helfen?
    Danke schon mal :)

    LG,
    Dési

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „demolay“ ()

    Hi!

    1. bei den Properties musst du zwischen String und Integer konvertieren.

    2. das mit dem Ereignis hast du wohl falsch verstanden: du sollst kein Eregnis handhaben / darauf reagieren (handles) sondern ein eigenes definieren. In der Angabe find ich aber nirgendwo eine Stelle wos ausgelöst wird !?

    Ein Ereignis definiert man so:

    VB.NET-Quellcode

    1. Public Event InputErrorEvent(Sender As Object, Eingabewert As String, Fehlertext As String)


    Auslösen geht dann z.B. so:

    VB.NET-Quellcode

    1. RaiseEvent InputErrorEvent(Me, Me.Text, "Ungültige Eingabe")
    2. 'Sender = Objekt, das den "Fehler" erzeugt hat = Me = dieses Objekt
    3. 'Eingabewert wird wohl der eingegebene Wert sein
    4. 'Fehlertext ist einfach irgendeine Fehlermeldung


    3. Damit ist einfach eine Funktion gemeint, die Prüft ob der Parameter (string) eine gültige Zahl ist. Rückgabewert sollte hier boolean sein. Die Methode hatten wir schonmal über MSN ;)

    VB.NET-Quellcode

    1. Public Function NumberChecker(value as String) as Boolean
    2. try : Dim int as Integer = CInt(value) 'eine integer-variable definieren und versuchen ihr den String-Wert zuzuweisen
    3. catch : return false : end try 'bei Fehler false zurückgeben
    4. return true 'bei Erfolg (kein Fehler) true zurück geben
    5. End Sub


    Der Doppelpunkt ( : ) entspricht einem Zeilenumbruch. Ich finds bei sowas kleinem nur übersichtlicher das einfach in 2 Zeilen zu machen als in 5.


    so long..
    Andy


    PS: Wenn ein double übergeben wird, wird die Zahl einfach gerundet, wenn ein Punkt statt einem Komma angegeben wird (hängt von der Ländereinstellung ab) wird das einfach "überflogen", da das ja ein Tausender-Trennzeichen sein könnte.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Mad Andy“ ()

    Hallo!

    Danke für die Antwort. Gibt es für Teil 3 auch eine andere Methode es zu lösen? Wir haben noch kein Try & catch kennengelernt und ich weiß nicht ob es dafür Punktabzug gibt.

    Zum Auslösen habe ich hier gleich als nächsten Punkt:

    Über die Eigenschaften Zahl, MinValue und MaxValue können die entsprechenden
    Instanzvariablen verändert werden. Dies soll aber nur erfolgen, wenn eine gültige Zahl übergeben
    wird. Ansonsten soll ein InputErrorEvent-Ereignis ausgelöst werden, wobei der Fehlertext für
    jede Eigenschaft speziell anzupassen ist (z.B.: „Der minimale Wert muss eine ganze Zahl
    sein.“).

    LG,
    Dési

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „demolay“ ()