Wenn Sie viele Zeichen in ein Silverlight TextBox- oder RichTextBox-Steuerelement mit chinesischen oder japanischen IMEs eingeben, können unerwartete Ergebnisse erzielt werden.
Dieser Artikel hilft Ihnen, das Problem zu beheben, das auftritt, wenn Sie viele Zeichen in ein Silverlight TextBox- oder RichTextBox-Objekt mithilfe von chinesischen oder japanischen IMEs eingeben.
Gilt für: Silverlight
Ursprüngliche KB-Nummer: 2450968
Problembeschreibung
Wenn Sie in einem Silverlight TextBox-Steuerelement große Textmengen in das Kompositionsfenster eines Microsoft-Editors für vereinfachtes Chinesisch, traditionelles Chinesisch oder japanische Eingabemethoden (IME) eingeben, ohne die Zeichen in das TextBox-Objekt zu übernehmen, könnte der Browser eine Ausnahme auslösen, und Sie können auch sehen, dass Textblöcke im Kompositionsfenster wiederholt und an das TextBox-Objekt gebunden werden. Dieses Problem kann in jeder Version von Windows auftreten und in Internet Explorer, Firefox und Chrome auftreten. Eine Variation dieses Problems kann auch auftreten, wenn dieselben Aktionen in einem Silverlight RichTextBox-Objekt ausgeführt werden. In diesem Fall wird eine unbehandelte Ausnahme im Browser ausgelöst.
Ursache
Dies ist auf einen Fehler in Silverlight zurückzuführen.
Lösung
Die einzige Möglichkeit, dies zu diesem Zeitpunkt zu verhindern, besteht darin, Zeichen im Kompositionsfenster zu übernehmen, bevor die Maximale von 40 Zeichen erreicht ist.
Schritte zum Reproduzieren
Die Schritte zum Reproduzieren des Problems können je nach IME variieren. Es scheint keine Rolle zu spielen, welcher Browser verwendet wird oder auf welcher Plattform er ausgeführt wird. Ich habe das Problem auf Vista persönlich reproduziert, indem ich chinesisch (vereinfacht) Microsoft Pinyin IME, Chinesisch (traditionell) Neuer phonetischer IME und japanischer IME verwende. Die Schritte zum Erneuten Ausführen lauten wie folgt.
- Erstellen einer Silverlight 4-Anwendung
- Fügen Sie ein TextBox-Steuerelement hinzu, das mindestens 60 Zeichen enthalten kann.
- Führen Sie die Anwendung aus. Das Textfeld wird im Browser angezeigt. Setzen Sie den Fokus auf das Textfeld, machen Sie den Chinesischen (vereinfacht) Microsoft Pinyin IME aktiv, und legen Sie den Eingabemodus auf Chinesisch fest.
- Geben Sie die folgenden drei Buchstaben "a", "s" und "d" von einer englischen Tastatur wiederholt in das Silverlight-Textfeld ein.
Um das 47. Zeichen herum wurden einige Zeichen wiederholt, und die folgende Ausnahme wurde ausgelöst:
Nicht behandelter Fehler in der Silverlight-Anwendung
Code: 4004
Kategorie: ManagedRuntimeError
Meldung: System.Exception: Katastrophaler Fehler (Ausnahme von HRESULT: 0x8000FFFF (E_UNEXPECTED)) bei MS. Internal.XcpImports.CheckHResult(UInt32 hr) bei MS. Internal.XcpImports.Control_Raise(Steuerelement, IManagedPeerBase-Argumente, Byte nDelegate) bei System. Windows. Controls.TextBox.OnTextInputUpdate(TextCompositionEventArgs e) at System. Windows. Controls.Control.OnTextInputUpdate(Control ctrl, EventArgs e)
...