Prior to version 4 of ASP.NET the GridView's EditIndex property was not automatically set when firing the 'RowEditing' event. It was up to the programmer to set this value before rebinding, if they wanted the row to go into edit mode i.e.:

Private Sub GridView1_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GridView1.RowEditing
         GridView1.EditIndex=e.NewEditIndex
         BindGrid()
End Sub
When the grid rebinds, it would now be in edit mode on the selected index. Sometimes you handle the RowEditing event and do something other than put the row into edit mode, such as showing a custom popup window as the editor. Previously this meant intentionally not adding the above line which meant when the grid was rebound it would not be in edit mode. ASP.NET 4 is now automatically setting the EditIndex property, which is affecting backward compatibility in converted projects. The only way to prevent the grid from now going into edit mode on a row is to set 'e.Cancel=True' in the 'RowEditing' event e.g.:

Private Sub GridView1_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GridView1.RowEditing
        'we only want the unique ID of the data in the row
        Dim primaryKey As Integer = CInt(GridView1.DataKeys(e.NewEditIndex).Value)

        'show a popup window to edit the data for this row
        popEditWindow.CurrentRecordId = primaryKey
        popEditWindow.DataBind()

        mpeEditPopup.Show()
        e.Cancel = True 'we now need to add this line to prevent the row from going into edit mode
End Sub
A quick search on Google shows that this problem has already been reported to Microsoft which can be tracked here.