"Option Strict On" lässt spätes Binden nicht zu.

  • VB.NET

Es gibt 44 Antworten in diesem Thema. Der letzte Beitrag () ist von sonne75.

    "Option Strict On" lässt spätes Binden nicht zu.

    Hallo Zusammen!

    Ich habe gerade mal in meiner Anwendung die Option Strict On aktiviert und dort auch einige Fehler erhalten.
    Diese habe ich jetzt soweit alle gefixt außer 7 Stück , weil ich dort keinen Lösungsansatz finde.

    Der Fehler ist 7 mal der gleiche nur mit jeweilig anderer Zeile:

    Fehler 1 "Option Strict On" lässt spätes Binden nicht zu. C:\Users\Marvin\Documents\Visual Studio 2010\Projects\Umrechner\Umrechner\rechner.vb 519 18 Umrechner

    VB.NET-Quellcode

    1. If (((Microsoft.VisualBasic.Asc(e.KeyChar) >= 48) And (Microsoft.VisualBasic.Asc(e.KeyChar) <= 57)) Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 8)) Then
    2. sender.ForeColor = Color.Red
    3. rechnen.Enabled = False
    4. If Len(sender.Text) = 4 Then
    5. sender.ForeColor = Color.Green
    6. rechnen.Enabled = True
    7. End If
    8. Else
    9. e.KeyChar = CChar("")
    10. sender.ForeColor = Color.Red
    11. rechnen.Enabled = False
    12. End If
    13. Else
    14. If (((Microsoft.VisualBasic.Asc(e.KeyChar) >= 48) And (Microsoft.VisualBasic.Asc(e.KeyChar) <= 58)) Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 8)) Then
    15. sender.ForeColor = Color.Red
    16. rechnen.Enabled = False
    17. Else
    18. e.KeyChar = CChar("")
    19. sender.ForeColor = Color.Red
    20. rechnen.Enabled = False
    21. End If
    22. End If


    Fehler tritt überall auf wo sender. steht.

    Ebenfalls möchte ich das .VisualBasic hier raushaben. Doch wie ersetze ich das am besten?

    VB.NET-Quellcode

    1. Dauer1 = Convert.ToInt32(Microsoft.VisualBasic.Left(EndeStr, 2))
    2. 'Minuten Anfang, WICHTIG: Minuten zweistellig!!
    3. Dauer2 = Convert.ToInt32(Microsoft.VisualBasic.Right(EndeStr, 2))




    LG und vielen dank für eure Hilfe! :)
    Welches Steuerelement ruft den das Ereignis auf?

    Versuch mal Sender zum entsprechenden Typ zu casten.

    z.B.: Label

    VB.NET-Quellcode

    1. Dim lblSender As Label = DirectCast(sender,Label)
    2. lblSender.ForeColor = Color.Green


    Am besten einmal am Anfang des Codes casten und dann die neue Variable verwenden.

    Wenn es kein Label ist, einfach mit dem entsprechenden Typ austauschen.

    Edit:
    Zur Erklärung:

    Wenn eine Variable den Typ Object hat, weiß Visual Studio nicht ob diese Variable wirklich eine Eigenschaft "ForeColor" hat. Darum muss man die Variable erst zum richtigen Typ casten.

    Zu deinem zweiten Problem (Sollte nicht ein Thread pro Problem sein? ^^)

    Text in Zahlen umwandeln macht man mit

    VB.NET-Quellcode

    1. Dim zahl as Integer = Integer.Parse(Text)


    Um einen Teilstring zu erhalen gibts die Substring Methode:

    VB.NET-Quellcode

    1. Dim text as String = "Das ist ein Test"
    2. MessageBox.Show(text.Substring(text.length - 4)
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D

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

    Was soll denn "sender" bei dir sein? Du musst vorher "DirectCast" auf diesen Typ machen.

    VB.NET-Quellcode

    1. Dim tb=DirectCast(sender, TextBox)


    Beispiel für die Textbox. Und dann greifst du auf "tb" zu.

    Statt Left und Right gibt es "DeinString.Substring()"

    Derfuhr schrieb:

    Poste mal bitte die Ganze Sub inkl. Private Sub .....

    VB.NET-Quellcode

    1. Private Sub CustomTextBox124_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles CustomTextBox1.KeyPress, CustomTextBox99.KeyPress, CustomTextBox98.KeyPress, CustomTextBox97.KeyPress, CustomTextBox96.KeyPress, CustomTextBox95.KeyPress, CustomTextBox94.KeyPress, CustomTextBox93.KeyPress, CustomTextBox92.KeyPress, CustomTextBox91.KeyPress, CustomTextBox90.KeyPress, CustomTextBox9.KeyPress, CustomTextBox89.KeyPress, CustomTextBox88.KeyPress, CustomTextBox87.KeyPress, CustomTextBox86.KeyPress, CustomTextBox85.KeyPress, CustomTextBox84.KeyPress, CustomTextBox83.KeyPress, CustomTextBox82.KeyPress, CustomTextBox81.KeyPress, CustomTextBox80.KeyPress, CustomTextBox8.KeyPress, CustomTextBox79.KeyPress, CustomTextBox78.KeyPress, CustomTextBox77.KeyPress, CustomTextBox76.KeyPress, CustomTextBox75.KeyPress, CustomTextBox74.KeyPress, CustomTextBox73.KeyPress, CustomTextBox72.KeyPress, CustomTextBox71.KeyPress, CustomTextBox70.KeyPress, CustomTextBox7.KeyPress, CustomTextBox69.KeyPress, CustomTextBox68.KeyPress, CustomTextBox67.KeyPress, CustomTextBox66.KeyPress, CustomTextBox65.KeyPress, CustomTextBox64.KeyPress, CustomTextBox63.KeyPress, CustomTextBox62.KeyPress, CustomTextBox61.KeyPress, CustomTextBox60.KeyPress, CustomTextBox6.KeyPress, CustomTextBox59.KeyPress, CustomTextBox58.KeyPress, CustomTextBox57.KeyPress, CustomTextBox56.KeyPress, CustomTextBox55.KeyPress, CustomTextBox54.KeyPress, CustomTextBox53.KeyPress, CustomTextBox52.KeyPress, CustomTextBox51.KeyPress, CustomTextBox50.KeyPress, CustomTextBox5.KeyPress, CustomTextBox49.KeyPress, CustomTextBox48.KeyPress, CustomTextBox47.KeyPress, CustomTextBox46.KeyPress, CustomTextBox45.KeyPress, CustomTextBox44.KeyPress, CustomTextBox43.KeyPress, CustomTextBox42.KeyPress, CustomTextBox41.KeyPress, CustomTextBox40.KeyPress, CustomTextBox4.KeyPress, CustomTextBox39.KeyPress, CustomTextBox38.KeyPress, CustomTextBox37.KeyPress, CustomTextBox36.KeyPress, CustomTextBox35.KeyPress, CustomTextBox34.KeyPress, CustomTextBox33.KeyPress, CustomTextBox32.KeyPress, CustomTextBox31.KeyPress, CustomTextBox30.KeyPress, CustomTextBox3.KeyPress, CustomTextBox29.KeyPress, CustomTextBox28.KeyPress, CustomTextBox27.KeyPress, CustomTextBox26.KeyPress, CustomTextBox25.KeyPress, CustomTextBox24.KeyPress, CustomTextBox23.KeyPress, CustomTextBox22.KeyPress, CustomTextBox21.KeyPress, CustomTextBox20.KeyPress, CustomTextBox2.KeyPress, CustomTextBox19.KeyPress, CustomTextBox18.KeyPress, CustomTextBox17.KeyPress, CustomTextBox16.KeyPress, CustomTextBox15.KeyPress, CustomTextBox14.KeyPress, CustomTextBox13.KeyPress, CustomTextBox124.KeyPress, CustomTextBox123.KeyPress, CustomTextBox122.KeyPress, CustomTextBox121.KeyPress, CustomTextBox120.KeyPress, CustomTextBox12.KeyPress, CustomTextBox119.KeyPress, CustomTextBox118.KeyPress, CustomTextBox117.KeyPress, CustomTextBox116.KeyPress, CustomTextBox115.KeyPress, CustomTextBox114.KeyPress, CustomTextBox113.KeyPress, CustomTextBox112.KeyPress, CustomTextBox111.KeyPress, CustomTextBox110.KeyPress, CustomTextBox11.KeyPress, CustomTextBox109.KeyPress, CustomTextBox108.KeyPress, CustomTextBox107.KeyPress, CustomTextBox106.KeyPress, CustomTextBox105.KeyPress, CustomTextBox104.KeyPress, CustomTextBox103.KeyPress, CustomTextBox102.KeyPress, CustomTextBox101.KeyPress, CustomTextBox100.KeyPress, CustomTextBox10.KeyPress
    2. If InStr(sender.Text, ":") Then
    3. If (((Microsoft.VisualBasic.Asc(e.KeyChar) >= 48) And (Microsoft.VisualBasic.Asc(e.KeyChar) <= 57)) Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 8)) Then
    4. sender.ForeColor = Color.Red
    5. rechnen.Enabled = False
    6. If Len(sender.Text) = 4 Then
    7. sender.ForeColor = Color.Green
    8. rechnen.Enabled = True
    9. End If
    10. Else
    11. e.KeyChar = CChar("")
    12. sender.ForeColor = Color.Red
    13. rechnen.Enabled = False
    14. End If
    15. Else
    16. If (((Microsoft.VisualBasic.Asc(e.KeyChar) >= 48) And (Microsoft.VisualBasic.Asc(e.KeyChar) <= 58)) Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 8)) Then
    17. sender.ForeColor = Color.Red
    18. rechnen.Enabled = False
    19. Else
    20. e.KeyChar = CChar("")
    21. sender.ForeColor = Color.Red
    22. rechnen.Enabled = False
    23. End If
    24. End If
    25. End Sub
    Dann war ich ja nah dran mit der Textbox ;) Musst halt "CustomTextBox" stattdessen nehmen.

    Was soll "InStr()" sein? Und du hast noch Microsoft.VisualBasic.Asc drin, dann noch "Len". Statt "And" solltest du "AndAlso" nehmen, dann wird der zweite Element gar nicht geprüft, wenn schon der erste nicht passt.

    sonne75 schrieb:

    Dann war ich ja nah dran mit der Textbox ;) Musst halt "CustomTextBox" stattdessen nehmen.

    Was soll "InStr()" sein? Und du hast noch Microsoft.VisualBasic.Asc drin, dann noch "Len". Statt "And" solltest du "AndAlso" nehmen, dann wird der zweite Element gar nicht geprüft, wenn schon der erste nicht passt.

    Fehler 1 Der Verweis auf einen nicht freigegebenen Member erfordert einen Objektverweis. C:\Users\Marvin\Documents\Visual Studio 2010\Projects\Umrechner\Umrechner\rechner.vb 519 18 Umrechner
    :S
    Wie die anderen hier schon sagten, direct am Anfang, ein CustomTextBox deklarieren und direkt casten.

    VB.NET-Quellcode

    1. Private Sub CustomTextBox124_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles CustomTextBox1.KeyPress, CustomTextBox99.KeyPress, CustomTextBox98.KeyPress, CustomTextBox97.KeyPress, CustomTextBox96.KeyPress, CustomTextBox95.KeyPress, CustomTextBox94.KeyPress, CustomTextBox93.KeyPress, CustomTextBox92.KeyPress, CustomTextBox91.KeyPress, CustomTextBox90.KeyPress, CustomTextBox9.KeyPress, CustomTextBox89.KeyPress, CustomTextBox88.KeyPress, CustomTextBox87.KeyPress, CustomTextBox86.KeyPress, CustomTextBox85.KeyPress, CustomTextBox84.KeyPress, CustomTextBox83.KeyPress, CustomTextBox82.KeyPress, CustomTextBox81.KeyPress, CustomTextBox80.KeyPress, CustomTextBox8.KeyPress, CustomTextBox79.KeyPress, CustomTextBox78.KeyPress, CustomTextBox77.KeyPress, CustomTextBox76.KeyPress, CustomTextBox75.KeyPress, CustomTextBox74.KeyPress, CustomTextBox73.KeyPress, CustomTextBox72.KeyPress, CustomTextBox71.KeyPress, CustomTextBox70.KeyPress, CustomTextBox7.KeyPress, CustomTextBox69.KeyPress, CustomTextBox68.KeyPress, CustomTextBox67.KeyPress, CustomTextBox66.KeyPress, CustomTextBox65.KeyPress, CustomTextBox64.KeyPress, CustomTextBox63.KeyPress, CustomTextBox62.KeyPress, CustomTextBox61.KeyPress, CustomTextBox60.KeyPress, CustomTextBox6.KeyPress, CustomTextBox59.KeyPress, CustomTextBox58.KeyPress, CustomTextBox57.KeyPress, CustomTextBox56.KeyPress, CustomTextBox55.KeyPress, CustomTextBox54.KeyPress, CustomTextBox53.KeyPress, CustomTextBox52.KeyPress, CustomTextBox51.KeyPress, CustomTextBox50.KeyPress, CustomTextBox5.KeyPress, CustomTextBox49.KeyPress, CustomTextBox48.KeyPress, CustomTextBox47.KeyPress, CustomTextBox46.KeyPress, CustomTextBox45.KeyPress, CustomTextBox44.KeyPress, CustomTextBox43.KeyPress, CustomTextBox42.KeyPress, CustomTextBox41.KeyPress, CustomTextBox40.KeyPress, CustomTextBox4.KeyPress, CustomTextBox39.KeyPress, CustomTextBox38.KeyPress, CustomTextBox37.KeyPress, CustomTextBox36.KeyPress, CustomTextBox35.KeyPress, CustomTextBox34.KeyPress, CustomTextBox33.KeyPress, CustomTextBox32.KeyPress, CustomTextBox31.KeyPress, CustomTextBox30.KeyPress, CustomTextBox3.KeyPress, CustomTextBox29.KeyPress, CustomTextBox28.KeyPress, CustomTextBox27.KeyPress, CustomTextBox26.KeyPress, CustomTextBox25.KeyPress, CustomTextBox24.KeyPress, CustomTextBox23.KeyPress, CustomTextBox22.KeyPress, CustomTextBox21.KeyPress, CustomTextBox20.KeyPress, CustomTextBox2.KeyPress, CustomTextBox19.KeyPress, CustomTextBox18.KeyPress, CustomTextBox17.KeyPress, CustomTextBox16.KeyPress, CustomTextBox15.KeyPress, CustomTextBox14.KeyPress, CustomTextBox13.KeyPress, CustomTextBox124.KeyPress, CustomTextBox123.KeyPress, CustomTextBox122.KeyPress, CustomTextBox121.KeyPress, CustomTextBox120.KeyPress, CustomTextBox12.KeyPress, CustomTextBox119.KeyPress, CustomTextBox118.KeyPress, CustomTextBox117.KeyPress, CustomTextBox116.KeyPress, CustomTextBox115.KeyPress, CustomTextBox114.KeyPress, CustomTextBox113.KeyPress, CustomTextBox112.KeyPress, CustomTextBox111.KeyPress, CustomTextBox110.KeyPress, CustomTextBox11.KeyPress, CustomTextBox109.KeyPress, CustomTextBox108.KeyPress, CustomTextBox107.KeyPress, CustomTextBox106.KeyPress, CustomTextBox105.KeyPress, CustomTextBox104.KeyPress, CustomTextBox103.KeyPress, CustomTextBox102.KeyPress, CustomTextBox101.KeyPress, CustomTextBox100.KeyPress, CustomTextBox10.KeyPress
    2. Dim CTB As CustomTextBox1 = DirectCast(sender, CustomTextBox)
    3. If InStr(sender.Text, ":") Then
    4. If (((Microsoft.VisualBasic.Asc(e.KeyChar) >= 48) And (Microsoft.VisualBasic.Asc(e.KeyChar) <= 57)) Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 8)) Then
    5. CTB.ForeColor = Color.Red
    6. rechnen.Enabled = False
    7. If Len(CTB.Text) = 4 Then
    8. CTB.ForeColor = Color.Green
    9. rechnen.Enabled = True
    10. End If
    11. Else
    12. e.KeyChar = CChar("")
    13. CTB.ForeColor = Color.Red
    14. rechnen.Enabled = False
    15. End If
    16. Else
    17. If (((Microsoft.VisualBasic.Asc(e.KeyChar) >= 48) And (Microsoft.VisualBasic.Asc(e.KeyChar) <= 58)) Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 8)) Then
    18. CTB.ForeColor = Color.Red
    19. rechnen.Enabled = False
    20. Else
    21. e.KeyChar = CChar("")
    22. CTB.ForeColor = Color.Red
    23. rechnen.Enabled = False
    24. End If
    25. End If
    26. End Sub


    Anstatt von handles CTB1... CTB2... könntest du auch mit AddHandler in einer Schleife arbeiten, macht die ganze Sache einfacher und übersichtlicher.

    sonne75 schrieb:

    Ach so, ich sehe, CustomTextBox ist ja gar keine Klasse, nur der Name. Dann halt "TextBox", wie im Vorschlag.
    Doch CustomTextBox ist eine selbsthinzugefügte Klasse.
    Hier der Code der Klasse:

    VB.NET-Quellcode

    1. Public Class CustomTextBox : Inherits TextBox
    2. Protected Overrides Sub OnMouseClick(ByVal e As MouseEventArgs)
    3. Text = String.Empty
    4. MyBase.OnMouseClick(e)
    5. End Sub
    6. End Class


    Dies befindet sich in der Datei textreset.vb

    @topic

    Derfuhr schrieb:

    Anstatt von handles CTB1... CTB2... könntest du auch mit AddHandler in einer Schleife arbeiten, macht die ganze Sache einfacher und übersichtlicher.
    Wie würde das denn etwa aussehen? Wozu brauche ich eine schleife wenn er immer nur 1 CustomTextBox prüft bei Texteingabe.
    Es ist ja nur ein einfaches KeyPress Event das die Länge des Inhalts erfassen soll und bei länge 5 auf Grün umspringen soll :)

    LG

    sonne75 schrieb:

    MarvinKleinMusic schrieb:

    Fehler 1 Der Verweis auf einen nicht freigegebenen Member erfordert einen Objektverweis. C:\Users\Marvin\Documents\Visual Studio 2010\Projects\Umrechner\Umrechner\rechner.vb 519 18 Umrechner

    Und was ist dann damit?

    Der fehler kam wenn ich das sender. jeweils durch CustomtextBox. ersetzt habe ;)
    Mit dem AddHandler würde denn z.B. so aussehen:

    VB.NET-Quellcode

    1. Private Sub addhandles()
    2. For Each ctrl As Button In Me.Controls.OfType(Of Button)()
    3. AddHandler ctrl.KeyPress, AddressOf Buttons_KeyPress
    4. Next
    5. End Sub
    6. Private Sub Buttons_KeyPress(sender As Object, e As KeyPressEventArgs)
    7. 'was zu tun ist
    8. End Sub

    Derfuhr schrieb:

    For Each ctrl As Button In Me.Controls.OfType(Of Button)()

    Ich weiß nicht, ob es nen Unterschied macht, wenn da "Button" dransteht, aber so ist es normalerweise:

    VB.NET-Quellcode

    1. For Each ctrl As Control In Me.Controls.OfType(Of Button)()
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    MarvinKleinMusic schrieb:

    Der fehler kam wenn ich das sender. jeweils durch CustomtextBox. ersetzt habe ;)

    sonne75 schrieb:

    VB.NET-Quellcode

    1. Dim tb=DirectCast(sender, TextBox)

    sonne75 schrieb:

    Dann war ich ja nah dran mit der Textbox ;) Musst halt "CustomTextBox" stattdessen nehmen.


    Du sollst ja auch nicht "sender" damit ersetzen, was soll es für einen Sinn haben? Sondern statt "TextBox" in meinem Code für den Datentyp deine "CustomTextBox" nehmen, zum Casten.
    @Trade: Ja da magst du recht haben. Ich schreib auch wenn ich das Control direkt definiere, hinten immer automatisch OfType(Of )() hinten dran 8o .

    Edit: Hab das eben so getestet, gab eine Exception, da andere Controls da sind.

    VB.NET-Quellcode

    1. For Each ctrl As Button In Me.Controls


    Edit: Hab Trade falsch verstanden.

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

    Normalerweise würde ich das nicht tun, aber ich hab dir das Ganze mal umgeschrieben, damit du ein schönes Beispiel hast, wie man sowas mit weniger Code lösen kann:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub CustomTextBox124_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles CustomTextBox1.KeyPress, CustomTextBox99.KeyPress, CustomTextBox98.KeyPress, CustomTextBox97.KeyPress, CustomTextBox96.KeyPress, CustomTextBox95.KeyPress, CustomTextBox94.KeyPress, CustomTextBox93.KeyPress, CustomTextBox92.KeyPress, CustomTextBox91.KeyPress, CustomTextBox90.KeyPress, CustomTextBox9.KeyPress, CustomTextBox89.KeyPress, CustomTextBox88.KeyPress, CustomTextBox87.KeyPress, CustomTextBox86.KeyPress, CustomTextBox85.KeyPress, CustomTextBox84.KeyPress, CustomTextBox83.KeyPress, CustomTextBox82.KeyPress, CustomTextBox81.KeyPress, CustomTextBox80.KeyPress, CustomTextBox8.KeyPress, CustomTextBox79.KeyPress, CustomTextBox78.KeyPress, CustomTextBox77.KeyPress, CustomTextBox76.KeyPress, CustomTextBox75.KeyPress, CustomTextBox74.KeyPress, CustomTextBox73.KeyPress, CustomTextBox72.KeyPress, CustomTextBox71.KeyPress, CustomTextBox70.KeyPress, CustomTextBox7.KeyPress, CustomTextBox69.KeyPress, CustomTextBox68.KeyPress, CustomTextBox67.KeyPress, CustomTextBox66.KeyPress, CustomTextBox65.KeyPress, CustomTextBox64.KeyPress, CustomTextBox63.KeyPress, CustomTextBox62.KeyPress, CustomTextBox61.KeyPress, CustomTextBox60.KeyPress, CustomTextBox6.KeyPress, CustomTextBox59.KeyPress, CustomTextBox58.KeyPress, CustomTextBox57.KeyPress, CustomTextBox56.KeyPress, CustomTextBox55.KeyPress, CustomTextBox54.KeyPress, CustomTextBox53.KeyPress, CustomTextBox52.KeyPress, CustomTextBox51.KeyPress, CustomTextBox50.KeyPress, CustomTextBox5.KeyPress, CustomTextBox49.KeyPress, CustomTextBox48.KeyPress, CustomTextBox47.KeyPress, CustomTextBox46.KeyPress, CustomTextBox45.KeyPress, CustomTextBox44.KeyPress, CustomTextBox43.KeyPress, CustomTextBox42.KeyPress, CustomTextBox41.KeyPress, CustomTextBox40.KeyPress, CustomTextBox4.KeyPress, CustomTextBox39.KeyPress, CustomTextBox38.KeyPress, CustomTextBox37.KeyPress, CustomTextBox36.KeyPress, CustomTextBox35.KeyPress, CustomTextBox34.KeyPress, CustomTextBox33.KeyPress, CustomTextBox32.KeyPress, CustomTextBox31.KeyPress, CustomTextBox30.KeyPress, CustomTextBox3.KeyPress, CustomTextBox29.KeyPress, CustomTextBox28.KeyPress, CustomTextBox27.KeyPress, CustomTextBox26.KeyPress, CustomTextBox25.KeyPress, CustomTextBox24.KeyPress, CustomTextBox23.KeyPress, CustomTextBox22.KeyPress, CustomTextBox21.KeyPress, CustomTextBox20.KeyPress, CustomTextBox2.KeyPress, CustomTextBox19.KeyPress, CustomTextBox18.KeyPress, CustomTextBox17.KeyPress, CustomTextBox16.KeyPress, CustomTextBox15.KeyPress, CustomTextBox14.KeyPress, CustomTextBox13.KeyPress, CustomTextBox124.KeyPress, CustomTextBox123.KeyPress, CustomTextBox122.KeyPress, CustomTextBox121.KeyPress, CustomTextBox120.KeyPress, CustomTextBox12.KeyPress, CustomTextBox119.KeyPress, CustomTextBox118.KeyPress, CustomTextBox117.KeyPress, CustomTextBox116.KeyPress, CustomTextBox115.KeyPress, CustomTextBox114.KeyPress, CustomTextBox113.KeyPress, CustomTextBox112.KeyPress, CustomTextBox111.KeyPress, CustomTextBox110.KeyPress, CustomTextBox11.KeyPress, CustomTextBox109.KeyPress, CustomTextBox108.KeyPress, CustomTextBox107.KeyPress, CustomTextBox106.KeyPress, CustomTextBox105.KeyPress, CustomTextBox104.KeyPress, CustomTextBox103.KeyPress, CustomTextBox102.KeyPress, CustomTextBox101.KeyPress, CustomTextBox100.KeyPress, CustomTextBox10.KeyPress
    2. Dim txtSender As TextBox = DirectCast(sender, TextBox)
    3. Dim KeyCode As Integer = Convert.ToInt32(e.KeyChar)
    4. txtSender.ForeColor = Color.Red
    5. rechnen.Enabled = False
    6. If txtSender.Text.Contains(":") Then
    7. If (KeyCode >= 48 AndAlso KeyCode <= 57) OrElse KeyCode = 8 AndAlso txtSender.Text.Length = 4 Then
    8. txtSender.ForeColor = Color.Green
    9. rechnen.Enabled = True
    10. Else
    11. 'Je nach dem was im Anschluss mit e.KeyChar vorhast, kannst du es entweder so
    12. e.KeyChar = Char.MinValue ' = Nothing
    13. 'Oder so setzen
    14. 'e.KeyChar = " "c ' = genau 1 Leerzeichen
    15. End If
    16. ElseIf (KeyCode < 48 OrElse KeyCode > 58) AndAlso KeyCode <> 8 Then
    17. e.KeyChar = Char.MinValue
    18. End If
    19. End Sub


    Um die Handler automatisch hinzuzufügen, kannst du folgenden Code nehmen:

    VB.NET-Quellcode

    1. Public Sub RegisterKeyPress(ByVal Tag As String, ByRef handler As KeyPressEventHandler, Optional ByVal parent As Control = Nothing)
    2. If parent Is Nothing Then parent = Me
    3. For Each c As Control In parent.Controls
    4. If c.HasChildren Then RegisterKeyPress(Tag, handler, c)
    5. If c.Tag.ToString = Tag Then AddHandler c.KeyPress, handler
    6. Next
    7. End Sub


    Verwendung des Codes:

    VB.NET-Quellcode

    1. RegisterKeyPress("this", AddressOf CustomTextBox124_KeyPress)


    Der Code durchsucht alle Controls und kontrolliert, ob die Tag Eigenschaft mit dem Parameter Tag übereinstimmt. Wenn ja, wird das Event registriert. Die Tag eigenschaft kann im Designer gesetzt werden.
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D

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

    BiedermannS schrieb:



    Um die Handler automatisch hinzuzufügen, kannst du folgenden Code nehmen:

    VB.NET-Quellcode

    1. Public Sub RegisterKeyPress(ByVal Tag As String, ByRef handler As KeyPressEventHandler, Optional ByVal parent As Control = Nothing)
    2. If parent Is Nothing Then parent = Me
    3. For Each c As Control In parent.Controls
    4. If c.HasChildren Then RegisterKeyPress(Tag, handler, c)
    5. If c.Tag.ToString = Tag Then AddHandler c.KeyPress, handler
    6. Next
    7. End Sub


    Verwendung des Codes:

    VB.NET-Quellcode

    1. RegisterKeyPress("this", AddressOf CustomTextBox124_KeyPress)


    Der Code durchsucht alle Controls und kontrolliert, ob die Tag Eigenschaft mit dem Parameter Tag übereinstimmt. Wenn ja, wird das Event registriert. Die Tag eigenschaft kann im Designer gesetzt werden.
    Hallo nochmal , ersteinmal danke für deine Antwort!
    Aber ich bin mir noch nicht ganz sicher wozu dieser Handler gut sein soll.
    Da er es mit den ersten Code überall schon Farbig darstellt.

    Jedoch tauchen noch 2 Probleme auf. VB zeigt zwar keine Errormeldung mehr an allerdings haben sich direkt 2 Bugs eingeschlichen.
    Undzwar wird der Inhalt der CustomTextBox schon grün wenn ich 00:0 eingebe. Er soll aber erst auf Grün switchen wenn 5 Zahlen vorhanden sind. (Das abändern der Zahl 4 auf 5 im Code hat dies nicht bewirkt).
    Ebenfalls sperrt er die Rücktaste sodass eine Fehlerkorrektur nicht möglich ist. Warum er dies tut weiß ich leider nicht in der alten Variante hatte es Prima Funktioniert.

    LG

    BiedermannS schrieb:


    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub CustomTextBox124_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles CustomTextBox1.KeyPress, CustomTextBox99.KeyPress, CustomTextBox98.KeyPress, CustomTextBox97.KeyPress, CustomTextBox96.KeyPress, CustomTextBox95.KeyPress, CustomTextBox94.KeyPress, CustomTextBox93.KeyPress, CustomTextBox92.KeyPress, CustomTextBox91.KeyPress, CustomTextBox90.KeyPress, CustomTextBox9.KeyPress, CustomTextBox89.KeyPress, CustomTextBox88.KeyPress, CustomTextBox87.KeyPress, CustomTextBox86.KeyPress, CustomTextBox85.KeyPress, CustomTextBox84.KeyPress, CustomTextBox83.KeyPress, CustomTextBox82.KeyPress, CustomTextBox81.KeyPress, CustomTextBox80.KeyPress, CustomTextBox8.KeyPress, CustomTextBox79.KeyPress, CustomTextBox78.KeyPress, CustomTextBox77.KeyPress, CustomTextBox76.KeyPress, CustomTextBox75.KeyPress, CustomTextBox74.KeyPress, CustomTextBox73.KeyPress, CustomTextBox72.KeyPress, CustomTextBox71.KeyPress, CustomTextBox70.KeyPress, CustomTextBox7.KeyPress, CustomTextBox69.KeyPress, CustomTextBox68.KeyPress, CustomTextBox67.KeyPress, CustomTextBox66.KeyPress, CustomTextBox65.KeyPress, CustomTextBox64.KeyPress, CustomTextBox63.KeyPress, CustomTextBox62.KeyPress, CustomTextBox61.KeyPress, CustomTextBox60.KeyPress, CustomTextBox6.KeyPress, CustomTextBox59.KeyPress, CustomTextBox58.KeyPress, CustomTextBox57.KeyPress, CustomTextBox56.KeyPress, CustomTextBox55.KeyPress, CustomTextBox54.KeyPress, CustomTextBox53.KeyPress, CustomTextBox52.KeyPress, CustomTextBox51.KeyPress, CustomTextBox50.KeyPress, CustomTextBox5.KeyPress, CustomTextBox49.KeyPress, CustomTextBox48.KeyPress, CustomTextBox47.KeyPress, CustomTextBox46.KeyPress, CustomTextBox45.KeyPress, CustomTextBox44.KeyPress, CustomTextBox43.KeyPress, CustomTextBox42.KeyPress, CustomTextBox41.KeyPress, CustomTextBox40.KeyPress, CustomTextBox4.KeyPress, CustomTextBox39.KeyPress, CustomTextBox38.KeyPress, CustomTextBox37.KeyPress, CustomTextBox36.KeyPress, CustomTextBox35.KeyPress, CustomTextBox34.KeyPress, CustomTextBox33.KeyPress, CustomTextBox32.KeyPress, CustomTextBox31.KeyPress, CustomTextBox30.KeyPress, CustomTextBox3.KeyPress, CustomTextBox29.KeyPress, CustomTextBox28.KeyPress, CustomTextBox27.KeyPress, CustomTextBox26.KeyPress, CustomTextBox25.KeyPress, CustomTextBox24.KeyPress, CustomTextBox23.KeyPress, CustomTextBox22.KeyPress, CustomTextBox21.KeyPress, CustomTextBox20.KeyPress, CustomTextBox2.KeyPress, CustomTextBox19.KeyPress, CustomTextBox18.KeyPress, CustomTextBox17.KeyPress, CustomTextBox16.KeyPress, CustomTextBox15.KeyPress, CustomTextBox14.KeyPress, CustomTextBox13.KeyPress, CustomTextBox124.KeyPress, CustomTextBox123.KeyPress, CustomTextBox122.KeyPress, CustomTextBox121.KeyPress, CustomTextBox120.KeyPress, CustomTextBox12.KeyPress, CustomTextBox119.KeyPress, CustomTextBox118.KeyPress, CustomTextBox117.KeyPress, CustomTextBox116.KeyPress, CustomTextBox115.KeyPress, CustomTextBox114.KeyPress, CustomTextBox113.KeyPress, CustomTextBox112.KeyPress, CustomTextBox111.KeyPress, CustomTextBox110.KeyPress, CustomTextBox11.KeyPress, CustomTextBox109.KeyPress, CustomTextBox108.KeyPress, CustomTextBox107.KeyPress, CustomTextBox106.KeyPress, CustomTextBox105.KeyPress, CustomTextBox104.KeyPress, CustomTextBox103.KeyPress, CustomTextBox102.KeyPress, CustomTextBox101.KeyPress, CustomTextBox100.KeyPress, CustomTextBox10.KeyPress
    2. Dim txtSender As TextBox = DirectCast(sender, TextBox)
    3. Dim KeyCode As Integer = Convert.ToInt32(e.KeyChar)
    4. txtSender.ForeColor = Color.Red
    5. rechnen.Enabled = False
    6. If txtSender.Text.Contains(":") Then
    7. If (KeyCode >= 48 AndAlso KeyCode <= 57) OrElse KeyCode = 8 AndAlso txtSender.Text.Length = 4 Then
    8. txtSender.ForeColor = Color.Green
    9. rechnen.Enabled = True
    10. Else
    11. 'Je nach dem was im Anschluss mit e.KeyChar vorhast, kannst du es entweder so
    12. e.KeyChar = Char.MinValue ' = Nothing
    13. 'Oder so setzen
    14. 'e.KeyChar = " "c ' = genau 1 Leerzeichen
    15. End If
    16. ElseIf (KeyCode < 48 OrElse KeyCode > 58) AndAlso KeyCode <> 8 Then
    17. e.KeyChar = Char.MinValue
    18. End If
    19. End Sub