是否可以直接使用键盘对 .NET DataGridView 列进行排序?
我知道有一个 SelectionMode 属性,但更改此属性仅允许我使用 Shift+Space 选择整行或整列,但这与使用鼠标单击标题并导致排序的效果不同。
我提出这个问题是因为我正在解决可访问性问题,并希望避免依赖鼠标。
感谢您的任何帮助。
是否可以直接使用键盘对 .NET DataGridView 列进行排序?
我知道有一个 SelectionMode 属性,但更改此属性仅允许我使用 Shift+Space 选择整行或整列,但这与使用鼠标单击标题并导致排序的效果不同。
我提出这个问题是因为我正在解决可访问性问题,并希望避免依赖鼠标。
感谢您的任何帮助。
首先,您需要在表单属性中将KeyPreview
属性设置为True
。
然后,在所需的事件中添加KeyDown()
事件处理程序。
接下来,添加以下类似代码:
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);
}
}
我不知道列标题是否会获得焦点(使用Ctrl + Tab /等等?),但是如果它们可以,并且您的键盘有上下文菜单按钮,则可能有效。但是我认为标题从不会获得键盘焦点。
否则,可能可以使用标准的可访问性功能来实现?