Folgendes Problem:
Wenn man in einem C1TrueDBGrid herumklickt, dann wird die Zeile zwar durch den MarqueeStyle (HighlightRow) zwar hervorgehoben, jedoch nicht in die SelectedRows-Collection aufgenommen. Selber bin ich nicht auf eine perfekte Lösung des Problems gekommen, bis ich diesen Artikel fand:
Newsgroup Article Component1.public.net.tdbgrid:4769
Ich musste ihn etwas abwandeln, da er keine Tastaturnavigation berücksichtigte. Also MarqueeStyle auf NoMarquee stellen und folgenden Code einfügen:
Private Sub TDBPersonenAdressen_SelChange(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.CancelEventArgs) Handles TDBPersonenAdressen.SelChange ' UpdateButttons() e.Cancel = True End Sub
Private Sub TDBPersonenAdressen_RowColChange(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.RowColChangeEventArgs) Handles TDBPersonenAdressen.RowColChange Dim aRow As Integer Dim aSelectedRow As Integer
Try aSelectedRow = TDBPersonenAdressen.Row ' TDBPersonenAdressen.RowContaining(e.Y) If e.LastRow <> aSelectedRow Then
If (Control.ModifierKeys And Keys.Control) > 0 Then If TDBPersonenAdressen.SelectedRows.IndexOf(aSelectedRow) > -1 Then If TDBPersonenAdressen.SelectedRows.Count > 1 Then TDBPersonenAdressen.SelectedRows.RemoveAt(TDBPersonenAdressen.SelectedRows.IndexOf(aSelectedRow)) End If Else TDBPersonenAdressen.SelectedRows.Add(aSelectedRow) End If Else If (Control.ModifierKeys And Keys.Shift) > 0 Then For aRow = (TDBPersonenAdressen.SelectedRows.Count - 1) To 1 Step -1 TDBPersonenAdressen.SelectedRows.RemoveAt(aRow) Next
If TDBPersonenAdressen.SelectedRows.Count > 0 Then If TDBPersonenAdressen.SelectedRows(0) > aSelectedRow Then For aRow = TDBPersonenAdressen.SelectedRows(0) To aSelectedRow Step -1 If TDBPersonenAdressen.SelectedRows.IndexOf(aRow) > -1 Then TDBPersonenAdressen.SelectedRows.RemoveAt(TDBPersonenAdressen.SelectedRows.IndexOf(aRow)) End If
TDBPersonenAdressen.SelectedRows.Add(aRow) Next Else For aRow = TDBPersonenAdressen.SelectedRows(0) To aSelectedRow If TDBPersonenAdressen.SelectedRows.IndexOf(aRow) > -1 Then TDBPersonenAdressen.SelectedRows.RemoveAt(TDBPersonenAdressen.SelectedRows.IndexOf(aRow)) End If
TDBPersonenAdressen.SelectedRows.Add(aRow) Next End If End If Else TDBPersonenAdressen.SelectedRows.Clear() TDBPersonenAdressen.SelectedRows.Add(aSelectedRow) End If End If
RaiseEvent SelectionChanged(Me, EventArgs.Empty) End If Catch ex As Exception Debug.WriteLine(ex.ToString) End Try End Sub
|
0 Kommentare:
Kommentar veröffentlichen
<< Zurück