是否可以仅使用键盘对.NET DataGridView列进行排序?

时间:2011-07-05 19:33:39

标签: c# .net vb.net datagridview

是否可以开箱即用仅使用键盘对.NET DataGridView列进行排序?

我知道有一个SelectionMode属性,但更改它只允许我使用Shift + Space选择整个行或列,但这与使用鼠标单击标题并导致排序

我问的原因是因为我正在处理可访问性问题,并且希望避免依赖鼠标。

感谢您的帮助。

3 个答案:

答案 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?),但是如果它们可以并且你的键盘有一个上下文菜单按钮,那么可以工作。但我不认为标题会得到键盘焦点。

否则,可能有办法使用标准的可访问性功能吗?