Hi,
This happened because the record is in the grid, even though you do not see. The method MoveNext don't have control about the visibility the row, it move for the next record in the grid, visible or not.
To do what you want. Do like this:
private void button1_Click(object sender, EventArgs e)
{
int indexrow = categoriaBindingSource.Position;
for (int item = indexrow; item < categoriaDataGridView.Rows.Count - 1; item++)
{
if (categoriaDataGridView.Rows[(item + 1)].Visible)
{
categoriaBindingSource.Position = (item + 1);
break;
}
}
}