2011-07-05 9 views
5

¿Es posible, de fábrica, ordenar una columna .NET DataGridView utilizando solo el teclado?¿Es posible ordenar una columna .NET DataGridView usando solo el teclado?

Entiendo que hay una propiedad SelectionMode, pero cambiar esto simplemente me permite seleccionar, usando Shift + Space, toda una fila o columna, pero esto no tiene el mismo efecto que hacer clic en el encabezado con el mouse y causar un tipo.

La razón por la que pregunto es porque estoy trabajando en problemas de accesibilidad y me gustaría evitar confiar en el mouse.

Gracias por cualquier ayuda.

+1

por "fuera de la caja" ¿quiere decir "no se requiere código"? –

+0

Sí, disculpe la ambigüedad, esperaba que hubiera una forma de hacer esto sin código que yo no sabía. – Eric

+0

No creo que exista. La buena noticia es que no debería tomar mucho código. =) – ZeroDivide

Respuesta

4

Lo primero que deberá hacer es establecer la propiedad KeyPreview en True en las propiedades del formulario.

Luego, en los eventos es necesario agregar un controlador de eventos para el evento KeyDown()

A continuación, añadir algo de código o menos así:

public class Form1{ 
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown); 

private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     //sort column 0 descending on a 'D' press 
     if (e.KeyCode == Keys.D) 
      dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Descending); 

     //sort column 0 Ascending on a 'U' press 
     if (e.KeyCode == Keys.U) 
      dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Ascending); 
    } 
} 
1

Puede ser que me falta algo, pero llame al método Sort en el momento en que reciba la combinación de teclas deseada.

0

no sé que los títulos de las columnas siempre consiguen enfoque (ctrl + tab/etc?), pero si pudieran y tu teclado tiene un botón de menú contextual, ese podría funcionar. pero no creo que los encabezados lleguen a enfocarse en el teclado.

De lo contrario, puede haber maneras de hacerlo utilizando las funciones de accesibilidad estándar?

Cuestiones relacionadas