是否可以开箱即用仅使用键盘对.NET DataGridView列进行排序?
我知道有一个SelectionMode属性,但更改它只允许我使用Shift + Space选择整个行或列,但这与使用鼠标单击标题并导致排序
我问的原因是因为我正在处理可访问性问题,并且希望避免依赖鼠标。
感谢您的帮助。
答案 0 :(得分:4)
您需要做的第一件事是在表单属性中将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);
}
}
答案 1 :(得分:1)
可能是我遗漏了一些东西,但是在你收到所需的Key组合时调用Sort方法。
答案 2 :(得分:0)
我不知道列标题是否会得到焦点(ctrl + tab / etc?),但是如果它们可以并且你的键盘有一个上下文菜单按钮,那么可以工作。但我不认为标题会得到键盘焦点。
否则,可能有办法使用标准的可访问性功能吗?