考虑绑定到某个数据库的dataGridView。dataGridView的绑定源有一个筛选器,它只显示description字段为空的位置。
这样的想法是,用户只会看到具有此值的记录,这些记录需要他们的注意。用户将始终将该值更改为其他值。
我的问题是,一旦它们通过enter或tab键移动到下一行,它几乎在移动到下一行之后就会过滤,将其位置移到它们应该在的位置下面的行。
是否有一种方法来控制此行为,使该位置在过滤发生后不会跳到下一行?虽然我知道这是一个解决方案,但我不想对这个特定问题进行单独的填充。我想知道如何更好地控制过滤,如果可能的话。
编辑
值得注意的是,我没有将任何事件连接到datagridview,这是将控件拖到窗体上、从dataset连接绑定源和填充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行。
编辑
从死亡中复活,因为我还没有得到一个合适的解决这个问题的方法。有谁有创意吗?^_^
发布于 2011-06-23 22:32:50
不久前,我对DataGridView
也有同样的问题。
我希望更改Enter键的行为,以将选定的行向上移动而不是向下移动。这就是我所做的,我希望它能帮助你。我创建了一个继承DataGridView的控件,并重写了ProcessCmdKey
并对其进行了更改。就你而言,你想做的是:
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时移动到下一行。我希望它对你有用,如果它不请说是什么问题。
https://stackoverflow.com/questions/6461150
复制相似问题