Escribir muchos caracteres en un TextBox de Silverlight o RichTextBox mediante IME chino o japonés puede producir resultados inesperados

Este artículo le ayuda a resolver el problema que se produce al escribir muchos caracteres en un TextBox de Silverlight o RichTextBox mediante ILE en chino o japonés.

Se aplica a:   Silverlight
Número de KB original:   2450968

Síntomas

En un Cuadro de texto de Silverlight, al introducir grandes cantidades de texto en la ventana de composición de un Editor de métodos de entrada (IME) de chino simplificado, chino tradicional o japonés de Microsoft sin confirmar los caracteres en el Cuadro de texto, se puede ver que el explorador produce una excepción y también se pueden ver bloques de texto en la ventana de composición repetidos y confirmados en el Cuadro de texto. Este problema puede producirse en cualquier versión de Windows y puede producirse en Internet Explorer, Firefox y Chrome. También puede producirse una variación de este problema al realizar las mismas acciones en un RichTextBox de Silverlight en cuyo caso se produce una excepción no controlada en el explorador.

Causa

Esto se debe a un error en Silverlight.

Solución

La única manera de evitar que esto ocurra en este momento es confirmar caracteres en la ventana de composición antes de alcanzar el límite de 40 caracteres.

Pasos para reproducir

Los pasos para reproducir el problema pueden variar en función del IME. No parece importar qué explorador se usa ni en qué plataforma se ejecuta. He reproducido personalmente el problema en Vista usando chino (simplificado) Microsoft Pinyin IME, chino (tradicional) Nuevo IME fonético e IME japonés. Los pasos de reproducción son los siguientes.

  1. Creación de una aplicación de Silverlight 4
  2. Agregue un TextBox capaz de contener al menos 60 caracteres.
  3. Ejecute la aplicación. Verá el cuadro de texto en el explorador. Establezca el foco en el cuadro de texto y active el IME chino (simplificado) de Microsoft Pinyin y establezca el modo de entrada en chino.
  4. Escriba las tres letras siguientes "a", "s" y "d" de un teclado en inglés repetidamente en el cuadro de texto de Silverlight.

Alrededor del carácter 47, se podían ver algunos caracteres repetidos y se podía ver la siguiente excepción:

Error nhandled en la aplicación silverlight
Código: 4004
Categoría: ManagedRuntimeError
Mensaje: System.Exception: Error catastrófico (excepción de HRESULT: 0x8000FFFF (E_UNEXPECTED)) en MS. Internal.XcpImports.CheckHResult(UInt32 hr) en MS. Internal.XcpImports.Control_Raise(Control, argumentos IManagedPeerBase, Byte nDelegate) en System. Windows. Controls.TextBox.OnTextInputUpdate(TextCompositionEventArgs e) en System. Windows. Controls.Control.OnTextInputUpdate(Control ctrl, EventArgs e)
...