Datagridview global select backcolor

  • VB.NET
  • .NET (FX) 4.0

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

    Datagridview global select backcolor

    Hallo,

    suche seit über einer Stunde nach einen Artikel den ich mal gefunden habe, wo man global für alle Datagridview die select backcolor farbe ändern konnte. Soweit ich mich erinnern kann, konnte man da so ziemlich alles an Farben festlegen...

    Kennt den zufällig jemand?


    Wäre sehr dankbar wenn mir einer, wenn kennt... den Artikel nennen könnte, danke!

    Gruß Michl
    @michl75 Designer, Spalte hinzufügen, DefaultCellstyle, SelectionBackColor.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    ich hab ein Modul mit einer Methode dafür:

    VB.NET-Quellcode

    1. Public Class ControlStyling
    2. Public Shared Sub StyleControls(frm As Form)
    3. Dim getChilds As Func(Of Control, IEnumerable) = Function(ctl) ctl.Controls '.Controls
    4. For Each ctl In getChilds.All(frm)
    5. Dim grd = TryCast(ctl, DataGridView)
    6. If grd.NotNull Then
    7. Dim tbl = DirectCast(DirectCast(grd.DataSource, BindingSource).List, DataView).Table
    8. For Each dgvCol As DataGridViewColumn In grd.Columns
    9. Dim propName = dgvCol.DataPropertyName
    10. If propName = "" Then Continue For
    11. Dim dataCol = tbl.Columns(propName)
    12. If dataCol.DataType = GetType(Decimal) Then
    13. With dgvCol.DefaultCellStyle
    14. .Alignment = DataGridViewContentAlignment.MiddleRight
    15. .Format = "c"
    16. .Font = New Font("Courier New", If(.Font, If(grd.DefaultCellStyle.Font, grd.Font)).Size)
    17. End With
    18. End If
    19. Next
    20. grd.RowHeadersWidth = 25
    21. grd.Attach.UnFocusedSelectionColor()
    22. grd.CellBorderStyle = DataGridViewCellBorderStyle.None
    23. AddHandler grd.KeyDown, AddressOf DatagridViewBehavior.DefaultValueOnDelete_KeyDown
    24. End If
    25. Dim tb = TryCast(ctl, TextBox)
    26. If tb.NotNull Then
    27. ' man kann hier auch andere Controls stylen, nicht nur DGV
    28. End If
    29. Next
    30. End Sub
    31. End Class
    Hmm - aber GetChilds.All() ist auch wieder eine rekursive Methode, die alle Controls des Forms durchläuft:

    VB.NET-Quellcode

    1. <Extension()> _
    2. Public Function AllChilds(Of T)( _
    3. GetChilds As Func(Of T, IEnumerable), _
    4. Roots As IEnumerable) As IEnumerable(Of T)
    5. Dim Enumerate As Func(Of IEnumerable(Of T), IEnumerable(Of T)) = Nothing
    6. Enumerate = Function(enmbl) enmbl.Concat(enmbl.SelectMany(Function(nd) Enumerate(GetChilds(nd).Cast(Of T))))
    7. Return Enumerate(Roots.Cast(Of T))
    8. End Function
    9. <Extension()> _
    10. Public Function All(Of T)( _
    11. GetChilds As Func(Of T, IEnumerable), Root As T) As IEnumerable(Of T)
    12. 'Root wird in die Enumeration hineingenommen, indem ein es enthaltendes IEnumerable(Of T)
    13. 'geschaffen wird, dessen Kinder ( = nur Root ) rekursiv enumeriert werden
    14. Return GetChilds.AllChilds(New T() {Root})
    15. End Function
    Das ist bischen nervig an meine Helpers, dass alles mit allem zusammenhängt.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    @ErfinderDesRades
    das hatte ich zwar so nicht im Sinn bzw. mehr in Erinnerung, aber habe es mir durchgelesen... denke mit einem Modul und auf diese Weise könnte ich eigentlich ja "alle" Voreinstellungen gleich mal einstellen.
    Die Idee gefällt mir sehr gut :) VIELEN DANK!

    Manchmal braucht man einen ordentlichen Ruck oder nen "Bums" auf den Kopf, dann läuft man wieder rund :)

    Nochmal Danke... ich werde mich daran mal probieren und es implementieren