現在オフラインです。再接続するためにインターネットの接続を待っています

Windows ストア アプリケーションで TextBox 内の文字列を操作する場合、改行文字が変換された結果が得られることがあります

現象
Windows ストア アプリケーションに TextBox コントロールを配置し、改行文字 (\r\n) を含む文字列を設定する場合を想定します。
このとき、SelectedText メソッドなどにより文字列操作を行うと、"\r\n" が "\r" に置き換えられた結果が得られます。
たとえば、以下のようなコードの実行を想定します。

TextBox tb1 = new TextBox();tb1.AcceptsReturn = true;tb1.Text = "AAA" + Environment.NewLine + "BBB" + Environment.NewLine + "CCC";tb1.SelectionStart = 0;tb1.SelectionLength = tb1.Text.Length;string s1 = tb1.Text;string s2 = tb1.SelectedText;int len = tb1.SelectedText.Length;

上記コードの実行時、以下の結果が得られることが想定されます。

s1 : "AAA\r\nBBB\r\nCCC" s2 : "AAA\r\nBBB\r\nCCC" len : 13

しかし、実際には、改行コード "\r\n" が "\r" のみで判断され、以下の結果となります。
s1 : "AAA\r\nBBB\r\nCCC" s2 : "AAA\rBBB\rCCC" len : 11

類似の現象は RichEditBox コントロールにおいて Document.Selection を基に処理を実行した場合にも発生します。

なお、Windows 8 デスクトップ アプリケーションでは本現象は発生せず、"\r\n" のまま処理された結果が得られます。



原因
ストア アプリケーションで利用される RichEditBox クラスの処理の一部で、改行コードを "\r\n" から "\r" に変換して処理する実装が含まれており、その影響によって本現象が発生します。
TextBox クラスの SelectedText メソッドなどの選択処理は、RichEditBox クラスの実装を使用しており、この影響を受けています。
解決方法
回避策
SelectedText メソッドにより得られた文字列内に "\r" のみが含まれている場合には "\r\n" に置き換えて操作するような実装を行う必要があります。
状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
詳細
関連情報
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2949063 - 最終更新日: 09/20/2016 11:03:00 - リビジョン: 2.0

Windows 8, Windows 8 Enterprise, Windows 8 Pro, Windows 8.1, Windows 8.1 Enterprise, Windows 8.1 Pro

  • KB2949063
フィードバック