DOBON.NET DOBON.NETプログラミング掲示板過去ログ

テキストボックスの左端の文字が隠れる

環境/言語:[XP VS2005 .NET Framework 2.0]
分類:[.NET]

テキストボックスに文字列を設定して、文字列全体を選択状態にしてフォーカスをセットすると、設定した文字の左側の何文字かが隠れて見えないという現象がおきて困っています。

文字は失われているわけではなく、カーソルを左に動かしていくと、隠れていた文字が現われてきます。感覚的には、テキストボックスの左側に文字列がはみ出していたという感じです。

テキストボックスの大きさに比べて、文字数が多すぎるわけではなく、充分余裕があるはずなです。

不思議なことに、いつもそうなるわけではなく、この現象が起こるときと、起こらないときがあり、どういう条件の時に起こるかは特定できないでいます。

どんなことが原因でしょうか。
何か対応策があったら教えた下さい。
■No20361に返信(とんびさんの記事)
> カーソルを左に動かしていくと、隠れていた文字が現われてきます
じゃあ、カーソル位置が悪いのでは?
・・・カーソル位置を変更すればいいだけでは?
[TextBoxBase.SelectionStart プロパティ]
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.textboxbase.selectionstart(VS.80).aspx
■No20367に返信(るしぇさんの記事)

> じゃあ、カーソル位置が悪いのでは?
> ・・・カーソル位置を変更すればいいだけでは?
> [TextBoxBase.SelectionStart プロパティ]

ユーザーが編集する可能性のあるテキストボックスにフォーカスを移す
ときテキスト全体を選択してフォーカスをセットしますよね。そういう
状態にしたいのです。TextBoxはSelectAllしていますから
SelectionStartは0になっていると思うのですが...全体選択状態
のまま、左端の数文字が隠れてしまうようです。
TextBoxのSelectionStartとSelectionLengthを調べてみました
SelectionStart=0
SelectionLength=20(全文字列の長さ)
でした。
2007/08/28(Tue) 22:31:44 編集(投稿者)

お騒がせしました。自分で解決できました。お騒がせしたお返しに
どういう現象だったか説明しておきます。

このテキストボックスは、様々なデータ項目の入力に使いまわしています。
そのとき次のような処理があります。

1) 入力対象の項目毎に、可能な最長の文字列が入るように大きさを調整
  します。
2) 入力対象の項目に既存のデータがあると、そのデータをテキストボッ
  クスに割り当ててから、その項目の編集を可能にします。

この1), 2)の順序を逆にしてしまったために問題が発生しました。
文字数の少ない入力項目から、文字数の多い入力項目に移るとき、先に既存
のデータをテキストボックスに割り当て、その後でボックスの大きさを調整
したのです。既存データを割り当てた段階で、文字列はテキストボックスを
はみ出し、末尾のテキストだけが表示されるようになりました。その後、テ
キストボックスの大きさを大きくしても、自動的には全テキストが表示され
る様にならかったというわけです。

1)と2)の順序を本来の順序に修正したら問題は発生しなくなりました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板