2009-12-31 30 views
5

que he estado tratando de encontrar la manera de seleccionar todas las células en una columna con un 'clic derecho del ratón + + menú Seleccione esta columna' ...DataGridView: ¿Cómo seleccionar una columna completa y anular la selección de todo lo demás?

MSDN no está ayudando mucho ...

me sale este error cuando intento cambiar el modo de selección:

DataGridView control's SelectionMode cannot be set to FullColumnSelect while it has a column with SortMode set to DataGridViewColumnSortMode.Automatic. 

Gracias, Y_Y

+0

Supongo que está utilizando WinForms? – SLaks

+0

Sí, estoy usando winforms ... –

+0

¿Cuál es el SelectionMode de DataGridView? – SLaks

Respuesta

4

bucle a través de las celdas de la columna y puesto su propiedad Selected en true.
Suena horrible, pero creo que es la única forma de seleccionar una columna completa y mantener la clasificación automática.

Por ejemplo:

grid.ClearSelection(); 
for(int r = 0; r < grid.RowCount; r++) 
    grid[columnIndex, r].Selected = true; 
+0

Nop ... grid.ClearSelection(); funciona pero la segunda línea no ... –

+0

¿Cómo me puedo deshacer de la clasificación automática? –

+0

Establezca la propiedad 'SortMode' en' false', como en la respuesta de David. – SLaks

9

sentimos que tomó tanto tiempo - quería probar antes de contestar, así que dejé esto en Visual Studio para probar primero.

que tenía que hacer esto en la mía para conseguir que funcione:

foreach (DataGridViewColumn c in dataGridView1.Columns) 
{ 
    c.SortMode = DataGridViewColumnSortMode.NotSortable; 
    c.Selected = false; 
} 
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullColumnSelect; 
dataGridView1.Columns[0].Selected = true; 
+0

También puede llamar al método 'ClearSelection'. – SLaks

+0

¿Tengo que ejecutar ese bucle cada vez que quiero seleccionar una columna? o es una llamada de tiempo? –

+0

Mientras que nada más cambie 'SortMode', solo necesita hacer eso una vez. – SLaks

1

Se necesitan 3 cosas.

  1. Borrar todas las filas y celdas seleccionadas.
  2. Elimina el modo ordenar de cada columna en No ordenable. El evento click predeterminado es ordenar, ahora será seleccionado.
  3. Establezca el modo de selección en la columna.

Finalmente puede seleccionar la primera columna para mostrar al usuario el modo de selección. Esto solo tiene que hacerse una vez. La primera vez que carga su formulario o su vista de cuadrícula de datos.

// Clear all selected cells or rows in the DGV. 
dataGridView1.ClearSelection(); 

// Make every column not sortable. 
for (int i=0; i < dataGridView1.Columns.Count; i++) 
    dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable; 

// Set selection mode to Column. 
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullColumnSelect; 

// In case you want the first column selected. 
if (dataGridView1.Columns.Count > 0) // Check if you have at least one column. 
    dataGridView1.Columns[0].Selected = true; 
Cuestiones relacionadas