首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何阻止设置了过滤器的DataGridView在列表中移动得太远?

如何阻止设置了过滤器的DataGridView在列表中移动得太远?
EN

Stack Overflow用户
提问于 2011-06-23 14:05:45
回答 1查看 509关注 0票数 2

考虑绑定到某个数据库的dataGridView。dataGridView的绑定源有一个筛选器,它只显示description字段为空的位置。

这样的想法是,用户只会看到具有此值的记录,这些记录需要他们的注意。用户将始终将该值更改为其他值。

我的问题是,一旦它们通过enter或tab键移动到下一行,它几乎在移动到下一行之后就会过滤,将其位置移到它们应该在的位置下面的行。

是否有一种方法来控制此行为,使该位置在过滤发生后不会跳到下一行?虽然我知道这是一个解决方案,但我不想对这个特定问题进行单独的填充。我想知道如何更好地控制过滤,如果可能的话。

编辑

值得注意的是,我没有将任何事件连接到datagridview,这是将控件拖到窗体上、从dataset连接绑定源和填充form_load事件上的数据集的开箱即用的行为。

编辑

当前行为的示例- (C)表示游标位置

用户在第2行中键入名称并将状态设置为TRUE

代码语言:javascript
运行
AI代码解释
复制
R1 - John Doe     FALSE
R2 - Jane Doe     TRUE (C)
R3 - Rob  Doe     FALSE
R4 - Joe  Doe     FALSE

用户按返回(或制表符,不管是谁,在本例中它的输入.)

代码语言:javascript
运行
AI代码解释
复制
R1 - John Doe     FALSE 
R3 - Rob  Doe     FALSE 
R4 - Joe  Doe     FALSE (C)

当前选定的行现在是第4行,实际上应该是第3行。如果没有将R2的值从false更改为true,它就不会过滤,并且将正确地移动到第3行。

编辑

从死亡中复活,因为我还没有得到一个合适的解决这个问题的方法。有谁有创意吗?^_^

EN

回答 1

Stack Overflow用户

发布于 2011-06-23 22:32:50

不久前,我对DataGridView也有同样的问题。

我希望更改Enter键的行为,以将选定的行向上移动而不是向下移动。这就是我所做的,我希望它能帮助你。我创建了一个继承DataGridView的控件,并重写了ProcessCmdKey并对其进行了更改。就你而言,你想做的是:

代码语言:javascript
运行
AI代码解释
复制
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);
    }
}

这将阻止gridView在按Enter或Tab时移动到下一行。我希望它对你有用,如果它不请说是什么问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6461150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档