如何阻止带有过滤器集的DataGridView从列表中移得太远?

| 考虑绑定到某些数据库的dataGridView。 dataGridView的绑定源具有一个过滤器,该过滤器仅显示描述字段为空的位置。 这样的想法是,用户将只看到具有该值的记录,这些记录需要他们注意。用户将始终将该值更改为其他值。 我的问题是,一旦他们通过Enter键或Tab键移动到了下一行,它几乎在移动到下一行之后就会进行过滤,将其位置移动到应该位于其下的那一行。 有没有一种方法可以控制此行为,以便在进行过滤后该位置不会跳到下一行?尽管我知道这是一个解决方案,但我不想针对此特定问题在数据集上单独填充。如果可能的话,我想知道如何更好地控制过滤。 编辑 值得一提的是,我还没有将任何事件连接到datagridview,这是将控件拖到窗体上,从数据集中挂钩到它的绑定源,并在form_load上填充数据集的开箱即用行为。事件。 编辑 当前行为的示例-(C)表示光标位置 用户在第2行中键入名称,并将状态设置为TRUE
R1 - John Doe     FALSE
R2 - Jane Doe     TRUE (C)
R3 - Rob  Doe     FALSE
R4 - Joe  Doe     FALSE
用户按回车键(或制表符,这无关紧要,在本例中为回车...)
R1 - John Doe     FALSE 
R3 - Rob  Doe     FALSE 
R4 - Joe  Doe     FALSE (C)
当前选择的行现在是第4行,它实际上应该是第3行。如果我没有将R2的值从false更改为true,则它不会被过滤,并且可以正确地将我移至第3行 编辑 从死里复活这件事,因为我还没有收到解决这个问题的合适方法。有人有创意吗? ^ _ ^     
已邀请:
        不久前我对ѭ2有同样的问题。 我想更改Enter键的行为,以使选定的行向上而不是向下移动。这是我所做的,希望对您有所帮助。我做了一个继承了DataGridView的控件,并覆盖了ѭ3并进行了更改。在您的情况下,您想要做的是:
public partial class MyDataGridView : DataGridView
{
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if (keyData == Keys.Tab || keyData == Keys.Enter)
        {
            return true;
        }

        return base.ProcessCmdKey(ref msg, keyData);
    }
}
当按下Enter或Tab时,这将阻止gridView移至下一行。希望它对您有用,如果不能解决,请说明问题所在。     

要回复问题请先登录注册