Hallo Torsten,
ich habe eine Frage zur Selektion eine Zeile in einem Grid. Ich habe das grid aufgebaut und möchte eine bestimmte Zeile selektieren (mache ich an einem Objekt im Tag-Attribut fest). Die Zeile soll farblich hervorgehoben sein (wie bei einem Mausklick) und soll sichtbar sein. Wie kann ich das erreichen. Wenn ich eine Row auf Selected setze, passiert leider nichts von beiden Wünschen. Die Zeile ist zwar selektiert, aber ich kann es visuell anzeigen.
Grüße
Erik
public void SelektiereKnoten(IStrukturKnoten knoten)
{
if (Rows.Count > 1)
{
//Alle Positionen neu Nummerieren
for (int i = 1; i < Rows.Count; i++)
{
IStrukturKnoten tempknoten = Rows.Tag as IStrukturKnoten;
if (tempknoten != null && knoten == tempknoten)
{
Rows.Selected = true;
}
}
}
}
Zeile selektieren und in den Fokus bringen
Re: Zeile selektieren und in den Fokus bringen
Hallo Erik
Schön von dir zu hören
Du musst zwischen Markierung und Fokuszelle unterscheiden:
Markierungen, die der User durch Maus und Tastatur erzeugt und der Markierung, die durch dein Programm erzeugt wird.
Jede Markierung, die du durch dein Programm erzeugst, wird zu den Markierungen des User hinzugefügt. Die User-Markierung
kann aber explizit gelöscht werden (Eigenschaft: Selected oder Selection-Object)
Beachte außerdem: Die durch dein Programm erzeugen Markierungen halten sich nicht an die Einschränkungen
bezgl. "grid.SelectionMode" bzw. "grid.SelectionType". Hast du zum Beispiel "grid.SelectionType = ppsGrid.eSelectionType.Single"
eingestellt, kannst du trotzdem per Programm "grid.Rows[row].Selected= true" die gesamte Zeile markieren.
Ich hoffe, ich konnte dir helfen...
Gruß Torsten
Schön von dir zu hören
Ist doch einfach:ich habe eine Frage zur Selektion eine Zeile in einem Grid. Ich habe das grid aufgebaut und möchte eine bestimmte Zeile selektieren
Code: Select all
grid.Selection.Clear(); // alte Markierungen löschen
grid.FocusCell= new Point (col,row); // Fokuszelle setzen
// grid.Cells[col, row].Selected= true; // Zelle markieren/selektieren
grid.Rows[row].Selected= true; // ...oder Zeile
grid.EnsureVisible(grid.Cells[col,row]); // Zur Fokuszelle scrollen
- - Die Markierung kann aus mehren Zellen bestehen und ist evtl. auch sichbar, wenn das Grid nicht den Fokus hat (siehe Eigenschaft grid.HideSelection)
- Die Fokuszelle ist immer nur eine Zelle groß und immer unsichtbar, wenn das Grid den Fokus nicht hat.
Markierungen, die der User durch Maus und Tastatur erzeugt und der Markierung, die durch dein Programm erzeugt wird.
Jede Markierung, die du durch dein Programm erzeugst, wird zu den Markierungen des User hinzugefügt. Die User-Markierung
kann aber explizit gelöscht werden (Eigenschaft: Selected oder Selection-Object)
Beachte außerdem: Die durch dein Programm erzeugen Markierungen halten sich nicht an die Einschränkungen
bezgl. "grid.SelectionMode" bzw. "grid.SelectionType". Hast du zum Beispiel "grid.SelectionType = ppsGrid.eSelectionType.Single"
eingestellt, kannst du trotzdem per Programm "grid.Rows[row].Selected= true" die gesamte Zeile markieren.
Ich hoffe, ich konnte dir helfen...
Gruß Torsten
Re: Zeile selektieren und in den Fokus bringen
Nachtrag:
Wenn die Markierungen nicht angezeigt werden, liegt das vielleicht auch daran, dass das Grid
nicht den Fokus besitzt. Erzeugst du das Ereignis "SelektiereKnoten" durch ein anderes Steuerelement?
Wenn das Grid die Markierungen auch anzeigen soll, wenn es nicht den Fokus besitzt, musst
du dies durch die Eigenschaft "grid.HideSelection" einstellen:
Mmmhhh...: "HideSelection==eHighlight.Always" zeigt die Markierung immer an...(komisch)
Entweder stimmt die Doku nicht oder ich hatte beim Proggen ein Blackout
Einfach mal die drei Einstellungen durchprobieren
Gruß Torsten
Wenn die Markierungen nicht angezeigt werden, liegt das vielleicht auch daran, dass das Grid
nicht den Fokus besitzt. Erzeugst du das Ereignis "SelektiereKnoten" durch ein anderes Steuerelement?
Wenn das Grid die Markierungen auch anzeigen soll, wenn es nicht den Fokus besitzt, musst
du dies durch die Eigenschaft "grid.HideSelection" einstellen:
Code: Select all
grid.HideSelection = eHighlight.None; // markierungen werden nie angezeigt
grid.HideSelection = eHighlight.Focused; // ...werden angezeigt mit Fokus
grid.HideSelection = eHighlight.Always; // ...werden immer angezeigt
Entweder stimmt die Doku nicht oder ich hatte beim Proggen ein Blackout
Einfach mal die drei Einstellungen durchprobieren
Gruß Torsten
Re: Zeile selektieren und in den Fokus bringen
Hallo Torsten,
danke für die Tipps. Jetzt geht es wunderbar. Mit EnsureVisibility und dem Fokus auf das Grid ist alles gut...
Erik
danke für die Tipps. Jetzt geht es wunderbar. Mit EnsureVisibility und dem Fokus auf das Grid ist alles gut...
Erik