У меня была похожая проблема, когда текстовое поле на панели обновлений не позволяло пользователю взаимодействовать, несмотря на то, что он имел фокус, пока не потерял фокус и не получил его обратно. Как и в оригинальном постере, это происходило только в IE8 в режиме несовместимости.
Я реализовал следующий обходной путь, который, кажется, делает свое дело:
ScriptManager.GetCurrent(Me.Page).SetFocus(txtAnotherTextBox)
ScriptManager.RegisterStartupScript(Me, Me.GetType, "Focus", _
"setTimeout(function() { document.getElementById('" _
& txtTextBox.ClientID & "').focus(); }, 200);", True)
В основном, я сначала фокусируюсь на другом элементе управления, затем регистрирую скрипт, чтобы сосредоточиться на элементе управления, который я хотел с задержкой 200 мс.