Hi,
ich versuche in einer DatagridView die Sortierreihenfolge für Vokale mit Akzenten einer Spalte zu verändern. Die übliche Reihenfolge etwa a < á < à soll verändert werden (das ist für meine Anwendung sehr wichtig).
Ich scheitere schon an den Begrifflichkeiten: IComparer und IComparable ... was ist denn der Unterschied .... und was sollte ich hier am Besten verwenden ?
Ich hab dann mal ÜBUNGSHALBER eine ICOMPARER Klasse definiert, die einfach case insensitive + ignore apostrophes vergleichen soll ...
Das ist soweit syntaktisch ok.
Aber wie baue ich das jetzt in meine SortDatagridview Logik ein ?
So habe ich das versucht:
Das scheitert mit der Fehlermeldung "implicit Konversion from CLApostCompare to Icomparer" ...
Was mache ich denn falsch ? Und bin ich überhaupt auf der richtigen Schiene ?
Ich hoffe, man kann mir (nachsichtig) helfen ....
LG
Peter
ich versuche in einer DatagridView die Sortierreihenfolge für Vokale mit Akzenten einer Spalte zu verändern. Die übliche Reihenfolge etwa a < á < à soll verändert werden (das ist für meine Anwendung sehr wichtig).
Ich scheitere schon an den Begrifflichkeiten: IComparer und IComparable ... was ist denn der Unterschied .... und was sollte ich hier am Besten verwenden ?
Ich hab dann mal ÜBUNGSHALBER eine ICOMPARER Klasse definiert, die einfach case insensitive + ignore apostrophes vergleichen soll ...
VB.NET-Quellcode
- Public Class CLApostCompare
- Implements IComparer(Of String)
- Public Shared ReadOnly Instance As New CLApostCompare
- Pulic Sub New()
- End Sub
- Public Function Compare(ByVal KeyOld As String, ByVal KeyNew As String) As Integer _
- Implements System.Collections.Generic.IComparer(Of String).Compare
- 'Ignore case and apostrophes
- Dim myOldKey = RemoveApost(KeyOld.ToUpper)
- Dim myNewKey = RemoveApost(KeyNew.ToUpper)
- If myOldKey < myNewKey Then Return -1
- If myOldKey > myNewKey Then Return 1
- Return 0
- End Function
- '-------------------------------------------------------------------------------------------------------------------
- ' ICOMPARER routines
- '-------------------------------------------------------------------------------------------------------------------
- Public Function RemoveApost(strInput As String) As String
- Const strAccentList As String = "áéíóúÁÉÍÓÚ" 'Accent list
- Const strBaseList As String = "aeiouAEIOU" 'Base list
- Dim myInput = ""
- For i = 0 To strInput.Length - 1
- Dim myDigit = strInput.Substring(i, 1)
- Dim k = strAccentList.IndexOf(myDigit)
- If k > -1 Then myDigit = strBaseList.Substring(k, 1)
- myInput &= myDigit
- Next
- Return myInput
- End Function
- End Class
Das ist soweit syntaktisch ok.
Aber wie baue ich das jetzt in meine SortDatagridview Logik ein ?
So habe ich das versucht:
Das scheitert mit der Fehlermeldung "implicit Konversion from CLApostCompare to Icomparer" ...
Was mache ich denn falsch ? Und bin ich überhaupt auf der richtigen Schiene ?
Ich hoffe, man kann mir (nachsichtig) helfen ....
LG
Peter
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Peter329“ ()