Freigeben über


Das Eingeben vieler Zeichen in ein Silverlight TextBox oder RichTextBox mit chinesischen oder japanischen IMEs kann zu unerwarteten Ergebnissen führen.

Hinweis

Silverlight wurde eingestellt und wird offiziell nicht mehr unterstützt. Weitere Informationen finden Sie unter Silverlight End of Support.

Dieser Artikel hilft Ihnen, das Problem zu lösen, das auftritt, wenn Sie viele Zeichen in ein Silverlight TextBox oder RichTextBox eingeben, indem Sie chinesische oder japanische IMEs verwenden.

Gilt für: Silverlight
Ursprüngliche KB-Nummer: 2450968

Symptome

In einer Silverlight-TextBox können beim Eingeben großer Mengen an Text in das Kompositionsfenster eines Microsoft Simplified Chinese, Traditional Chinese oder Japanese Input Method Editor (IME), ohne die Zeichen in die TextBox zu übernehmen, ein Browserausnahmefehler auftreten. Außerdem kann es vorkommen, dass Textblöcke im Kompositionsfenster wiederholt werden und schließlich in die TextBox übernommen werden. Dieses Problem kann bei jeder Version von Windows sowie in Internet Explorer, Firefox und Chrome auftreten. Eine Variation dieses Problems kann auch auftreten, wenn dieselben Aktionen in einem Silverlight RichTextBox ausgeführt werden, wobei in diesem Fall eine nicht behandelte Ausnahme im Browser ausgelöst wird.

Ursache

Dies liegt an einem Fehler in Silverlight.

Auflösung

Der einzige Weg, um zu verhindern, dass dies derzeit passiert, besteht darin, Zeichen im Eingabefenster festzulegen, bevor das Limit von 40 Zeichen erreicht ist.

Vorgehensweise

Die Schritte zur Reproduktion des Problems können je nach IME variieren. Es scheint nicht von Bedeutung zu sein, welcher Browser verwendet wird oder auf welcher Plattform er läuft. Ich habe das Problem persönlich auf Vista reproduziert, indem ich die chinesische (vereinfachte) Microsoft Pinyin IME, die chinesische (traditionelle) New Phonetic IME und die japanische IME verwendet habe. Die Schritte zur Reproduktion sind wie folgt.

  1. Erstelle eine Silverlight 4-Anwendung
  2. Fügen Sie ein Textfeld hinzu, das mindestens 60 Zeichen aufnehmen kann.
  3. Führen Sie die Anwendung aus. Sie sehen das Textfeld im Browser. Setzen Sie den Fokus auf das Textfeld und aktivieren Sie das vereinfachte chinesische Microsoft Pinyin-IME und stellen Sie den Eingabemodus auf Chinesisch ein.
  4. Geben Sie wiederholt die folgenden drei Buchstaben 'a', 's' und 'd' von einer englischen Tastatur in das Silverlight-Textfeld ein.

Um das 47. Zeichen herum könnten Sie sehen, dass einige Zeichen wiederholt werden, und Sie könnten sehen, dass die folgende Ausnahme ausgelöst wird:

Nicht behandelter Fehler in Silverlight-Anwendung
Code: 4004
Kategorie: ManagedRuntimeError
Message: System.Exception: Katastrophaler Fehler (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED)) at MS.Internal.XcpImports.CheckHResult(UInt32 hr) at MS.Internal.XcpImports.Control_Raise(Control control, IManagedPeerBase arguments, Byte nDelegate) at System.Windows.Controls.TextBox.OnTextInputUpdate(TextCompositionEventArgs e) at System.Windows.Controls.Control.OnTextInputUpdate(Control ctrl, EventArgs e)
...