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

4

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

我知道有一个 SelectionMode 属性,但更改此属性仅允许我使用 Shift+Space 选择整行或整列,但这与使用鼠标单击标题并导致排序的效果不同。

我提出这个问题是因为我正在解决可访问性问题,并希望避免依赖鼠标。

感谢您的任何帮助。


1
你所说的“out of the box”是指“无需编码”吗? - John Gardner
是的,抱歉造成了歧义,我希望有一种不需要编写代码的方法来完成这个任务,但我并不知道是否存在这样的方法。 - Eric
我认为没有。好消息是,这不需要太多的代码。=) - Stephen__T
3个回答

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
也许我漏掉了什么,但是在收到所需的键组合时立即调用Sort方法。

0

我不知道列标题是否会获得焦点(使用Ctrl + Tab /等等?),但是如果它们可以,并且您的键盘有上下文菜单按钮,则可能有效。但是我认为标题从不会获得键盘焦点。

否则,可能可以使用标准的可访问性功能来实现?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接