C# CTRL-A选择DataGridView中的隐藏行

C# CTRL-A选择DataGridView中的隐藏行,c#,winforms,datagridview,C#,Winforms,Datagridview,我在一个C#程序中有一个DataGridView对象,根据打开的过滤器设置,该对象中有时会隐藏行。我将DGV中的MultiSelect设置设置设置为True,当单击另一个按钮时,每行的ID将移到列表框中。但是,我注意到,如果按CTRL-A键,所有行(包括隐藏的行)也会被移到上面。我通过将行的Visible属性更改为False来隐藏行 我环顾四周,但找不到让CTRL-a命令只选择可见行的解决方案。这可能吗 谢谢 您可以通过处理网格的KeyDown事件来实现此自定义行为。在您的情况下,您可以这样写:

我在一个C#程序中有一个DataGridView对象,根据打开的过滤器设置,该对象中有时会隐藏行。我将DGV中的
MultiSelect
设置设置设置为True,当单击另一个按钮时,每行的ID将移到列表框中。但是,我注意到,如果按CTRL-A键,所有行(包括隐藏的行)也会被移到上面。我通过将行的
Visible
属性更改为False来隐藏行

我环顾四周,但找不到让CTRL-a命令只选择可见行的解决方案。这可能吗


谢谢

您可以通过处理网格的
KeyDown
事件来实现此自定义行为。在您的情况下,您可以这样写:

private void grid_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Modifiers == Keys.Control && e.KeyCode == Keys.A)
    {
        foreach (DataGridViewRow row in grid.Rows)
        {
            row.Selected = row.Visible;
        }
        e.Handled = true;
        e.SuppressKeyPress = true;
    }
}

您可以通过处理网格的
KeyDown
事件来实现此自定义行为。在您的情况下,您可以这样写:

private void grid_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Modifiers == Keys.Control && e.KeyCode == Keys.A)
    {
        foreach (DataGridViewRow row in grid.Rows)
        {
            row.Selected = row.Visible;
        }
        e.Handled = true;
        e.SuppressKeyPress = true;
    }
}