Markeringslägen i Windows Forms DataGridView-kontrollen

Ibland vill du att programmet ska utföra åtgärder baserat på användarval inom en DataGridView kontroll. Beroende på åtgärderna kanske du vill begränsa vilka typer av val som är möjliga. Anta till exempel att ditt program kan skriva ut en rapport för den valda posten. I det här fallet kanske du vill konfigurera DataGridView-kontrollen så att om du klickar någonstans inom en rad markeras alltid hela raden och så att endast en rad i taget kan väljas.

Du kan ange vilka val som tillåts genom att ange egenskapen DataGridView.SelectionMode till något av följande DataGridViewSelectionMode uppräkningsvärden.

DataGridViewSelectionMode-värde Beskrivning
CellSelect Genom att klicka på en cell markeras den. Rad- och kolumnrubriker kan inte användas för markering.
ColumnHeaderSelect Genom att klicka på en cell markeras den. Om du klickar på en kolumnrubrik markeras hela kolumnen. Kolumnrubriker kan inte användas för sortering.
FullColumnSelect Om du klickar på en cell eller en kolumnrubrik markeras hela kolumnen. Kolumnrubriker kan inte användas för sortering.
FullRowSelect Om du klickar på en cell eller en radrubrik markeras hela raden.
RowHeaderSelect Standardvalsläge. Genom att klicka på en cell markeras den. Om du klickar på en radrubrik markeras hela raden.

Anmärkning

Om du ändrar markeringsläget vid körning rensas den aktuella markeringen automatiskt.

Som standard kan användare välja flera rader, kolumner eller celler genom att dra med musen, trycka på CTRL eller SKIFT medan de väljer för att utöka eller ändra en markering eller klicka på den övre vänstra rubrikcellen för att markera alla celler i kontrollen. Om du vill förhindra det här beteendet anger du egenskapen MultiSelect till false.

Med lägena FullRowSelect och RowHeaderSelect kan användarna ta bort rader genom att välja dem och trycka på DELETE-tangenten. Användare kan bara ta bort rader när den aktuella cellen inte är i redigeringsläge, egenskapen AllowUserToDeleteRows är inställd på trueoch den underliggande datakällan stöder användardriven radborttagning. Observera att de här inställningarna inte förhindrar borttagning av programmatiska rader.

Programmatisk val

Det aktuella markeringsläget begränsar beteendet för programmatisk markering samt användarval. Du kan ändra den aktuella markeringen programmatiskt genom att ange egenskapen Selected för celler, rader eller kolumner som finns i kontrollen DataGridView. Du kan också markera alla celler i kontrollen via metoden SelectAll, beroende på markeringsläget. Om du vill rensa markeringen använder du metoden ClearSelection.

Om egenskapen MultiSelect är inställd på truekan du lägga till DataGridView element i eller ta bort dem från markeringen genom att ändra egenskapen Selected för elementet. Att ställa in egenskapen Selected till true för ett element, tar annars automatiskt bort andra element från markeringen.

Observera att om du ändrar värdet för egenskapen CurrentCell ändras inte den aktuella markeringen.

Du kan hämta en samling av de markerade cellerna, raderna eller kolumnerna genom SelectedCells, SelectedRowsoch SelectedColumns-egenskaperna hos kontrollen DataGridView. Åtkomsten till dessa egenskaper är ineffektiv när varje cell i kontrollen är markerad. Om du vill undvika prestandastraff i det här fallet använder du metoden AreAllCellsSelected först. Dessutom kan det vara ineffektivt att komma åt dessa samlingar för att fastställa antalet markerade celler, rader eller kolumner. I stället bör du använda metoden GetCellCount, GetRowCounteller GetColumnCount och skicka in värdet Selected.

Tips/Råd

Exempelkod som visar programmatisk användning av markerade celler finns i DataGridView-klassöversikten.

Se även