2010-12-18 11 views
1

私は定期的に文字を(1秒おきに)追加しているテキストボックス(例としてtextBox1)を持っています。テキストがテキストボックスに収まらないほど長くなると、オーバーフローは実際にはテキストボックスの左側に向かいますが、それは通常の振る舞いではなく、最後の文字常に表示されます。TextBox ScrollToHorizo​​ntalOffsetは、テキストが長すぎるとスクロールしません。

textBox1.ScrollToHorizontalOffset(textBox1.GetRectFromCharacterIndex(textBox1.Text.Length).Right); 

テキストの長さが十分に長くなるまで、これはうまく動作します:私は、私もやっている文字を追加しているとき、私はそれをやった 方法です。その後、スクロールは停止し、現在の左オーバーフローは残りますが、新しいオーバーフローはテキストボックスの右に移動します。テストのために私はすべての更新時にコンソールに を現在のテキストの長さを書いてtextBox1.GetRectFromCharacterIndex(textBox1.Text.Length).RIGHTよ:

... 
Length: 22 
Rect.Right: 81.99 
Length: 23 
Rect.Right: 85.4 
Length: 24 
Rect.Right: 88.81 
Length: 25 
Rect.Right: 91.41 
Length: 26 
Rect.Right: 91.41 
Length: 27 
Rect.Right: 91.4099999999999 
Length: 28 
Rect.Right: 91.4099999999999 
Length: 29 
Rect.Right: 91.4099999999999 
Length: 30 
Rect.Right: 91.4099999999999 
... 
Length: 47 
Rect.Right: 91.4099999999999 
Length: 48 
Rect.Right: 91.4099999999999 
Length: 49 
Rect.Right: 91.4099999999999 
Length: 50 
Rect.Right: 91.4099999999999 
Length: 51 
Rect.Right: 91.4099999999999 
Length: 52 
Rect.Right: 92.88 
Length: 53 
Rect.Right: 94.8199999999999 
Length: 54 
Rect.Right: 96.29 
Length: 55 
Rect.Right: 98.2299999999999 
Length: 56 
Rect.Right: 99.7 
Length: 57 
Rect.Right: 101.64

Text.Lengthが25である前に、テキストボックスがまだ広いですすべてに合うほど十分です。この時点以降、テキストはもう収まらなくなり、スクロールは長さが52になるまで行われます。

答えて

3

この動作は奇妙です。

私はあなたの代わりにあなたが右のすべての方法をスクロールしたいので、文字の実際の位置よりも大きな値を渡しても害はありません

textbox1.ScrollToHorizontalOffset(double.MaxValue); 

を使用して探していたため効果を得ました。

0

上記のすべては、私にとっては信頼できるものではありませんでした。何か他のことをしているうちに、私はこのアプローチに遭遇しました(選択ハイライトを使用して)。 TBはTextBox、は目的のオフセットの文字インデックスです。

TB.Focus(); //must be used 
TB.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Right; 
TB.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Left; 
TB.Select(0, ofs); //select up through desired offset 
TB.Select(0, 0);  //turn off selection 

...これが役立ちますように!

関連する問題