CharacterCasing.Upper im DGV

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von mrMo.

    CharacterCasing.Upper im DGV

    Hallo Zusammen.

    Ich komme bei einem Problem nicht ganz weiter. Ich habe ein DataGridView in dem ich die Daten bearbeiten kann. Der Text in der ersten Spalte ist dabei immer Großschreibung. In den anderen Spalten Groß und Klein.

    Das er den Text in der Ersten Spalte groß schreibt habe ich mit folgendem Code gelöst.

    VB.NET-Quellcode

    1. Private Sub dgv2_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles dgv2.EditingControlShowing
    2. If TypeOf e.Control IS TextBox AND dgv2.CurrentCell.ColumnIndex = 0 Then
    3. TryCast(e.Control, TextBox).CharacterCasing = CharacterCasing.Upper
    4. Else
    5. TryCast(e.Control, TextBox).CharacterCasing = CharacterCasing.Normal
    6. End If
    7. End Sub


    Das funktioniert auch soweit. Mein Problem dabei ist, das wenn ich eine Zelle in einer anderen Spalte danach bearbeite, er mir den Text der dort drin steht auch in Großbuchstaben umwandelt.

    Wie erreiche ich es das er mir nur den Text in der ersten Spalte in Großbuchstaben macht und sobald ich eine andere Spalte bearbeite in Normalschreibweise.


    Wenn ich das ganze mit diesem Code mache funktioniert es so wie es soll. Erste Spalte Großschreibung alle anderen Spalten Kleinschreibung.

    VB.NET-Quellcode

    1. Private Sub dgv2_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles dgv2.EditingControlShowing
    2. If TypeOf e.Control Is TextBox And dgv2.CurrentCell.ColumnIndex = 0 Then
    3. TryCast(e.Control, TextBox).CharacterCasing = CharacterCasing.Upper
    4. Else
    5. TryCast(e.Control, TextBox).CharacterCasing = CharacterCasing.Lower
    6. End If
    7. End Sub


    Hoffe Ihr könnt mir dabei helfen.

    Vielen Dank

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

    Braucht es denn überhaupt den Else-Part?

    Nachtrag: Willkommen im Forum!

    So würde ich es mal probieren, ist aber nur Pseudocode aus dem Notepad heraus geschrieben:

    VB.NET-Quellcode

    1. Private Sub dgv2_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles dgv2.EditingControlShowing
    2. If TypeOf e.Control IsNot TextBox Then
    3. Return
    4. End If
    5. If dgv2.CurrentCell.ColumnIndex = 0 Then
    6. TryCast(e.Control, TextBox).CharacterCasing = CharacterCasing.Upper
    7. End If
    8. End Sub

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

    Hallo Dksksm,

    Anscheinend braucht es den Else-Part. Wenn ich diesen weglasse bleibt das immer in Uppercase. Wenn ich den Else-Part drin habe und ich gehe in die Bearbeitung einer anderen spalte und ändere nichts und gehe dann nochmals auf eine andere Spalte in der er Normal schreiben soll macht er das dann auch. Ohne den Else-Part bleibt Uppercase.

    Vielen dank für den Code. Hab es damit versucht. Bringt aber leider keine abhilfe.

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

    Ich habe es mal in VB ausprobiert, bei mir geht der Code so wie du es wünscht:

    VB.NET-Quellcode

    1. Private Sub dgv2_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles dgv2.EditingControlShowing
    2. If TypeOf e.Control IsNot TextBox Then
    3. Return
    4. End If
    5. If dgv2.CurrentCell.ColumnIndex = 0 Then
    6. DirectCast(e.Control, TextBox).CharacterCasing = CharacterCasing.Upper
    7. Else
    8. DirectCast(e.Control, TextBox).CharacterCasing = CharacterCasing.Normal
    9. End If
    10. End Sub
    Bei mir anscheinend nicht so ganz.

    Hab mal ein Video angehängt wo man das sieht. Musste es als zip verpacken da es sonst nicht zum hochladen geht.

    Wenn ich in die Erste spalte gehe und etwas ändere ist es Groß so wie es sein soll. wenn ich dann in die zweite spalte gehe und etwas ändere wandelt er beim klick auf die Zelle alles in Großbuchstaben um. Wenn ich danach in eine andere Zelle klicke die nicht in der ersten Spalte ist funktioniert es Normal. Sobald ich wieder eine Zelle in der ersten Spalte ändere und danach eine andere Spalte ist beim betreten der Spalte alles Groß geschrieben
    Dateien
    • 2021.zip

      (563,05 kB, 120 mal heruntergeladen, zuletzt: )
    Tja, wenn man ein Werkzeug nicht so nutzt wie vorgesehen, aber da gibt's was von Ratiopharm.
    Man bastelt sich ein Event, deaboniert es wenn man in einer beliebigen TB im DGV herumhantiert und abboniert es wenn man zufällig grade ColumnIndex 0 herumwurschtelt.

    VB.NET-Quellcode

    1. Private Sub dgv2_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles dgv2.EditingControlShowing
    2. If TypeOf e.Control IsNot TextBox Then
    3. Return
    4. End If
    5. RemoveHandler e.Control.KeyPress, AddressOf Dgv2_tbToUpperCase
    6. If dgv2.CurrentCell.ColumnIndex = 0 Then
    7. AddHandler e.Control.KeyPress, AddressOf Dgv2_tbToUpperCase
    8. End If
    9. End Sub
    10. Private Sub Dgv2_tbToUpperCase(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
    11. e.KeyChar = UCase(e.KeyChar)
    12. End Sub
    probierma den:

    VB.NET-Quellcode

    1. Private Sub dgv2_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles dgv2.EditingControlShowing
    2. Dim txt = TryCast(e.Control, TextBox)
    3. If txt Is Nothing Then Return
    4. txt.CharacterCasing = If(dgv2.CurrentCell.ColumnIndex = 0, CharacterCasing.Upper, CharacterCasing.Normal)
    5. End Sub
    Würde man eine Objektliste als Datenquelle verwende, so könnte man nach Belieben im Getter einer Property des Objekts .ToUpper() verwenden.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen