C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 挿入


(過去ログ 56 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■31606 / inTopicNo.1)  挿入
  
□投稿者/ lino. (4回)-(2009/01/26(Mon) 10:26:03)

分類:[VB.NET/VB2005 以降] 

vb2005を使っています。

リストボックスで選択した項目のテキストをそのままテキストボックスに表示させたいのですが、
例えばテキストボックス(MultilineはTrueです)に「hello」とあって、oのすぐ右にフォーカスがあります。
ここに今リストボックスで「A」を選択すると
helloA
と表示させ、さらに「B」を選択すると(今Aのところにフォーカスがある)
helloAB
と表示させたいのです。で、
Private Sub ListBox1_SelectedIndexChanged(以下略
TextBox1.AppendText(ListBox1.SelectedItem)
End Sub
だと確かに挿入できるのですが、ついでになぜか改行もされてしまいます。つまり

helloA(←ここにフォーカスを表示させておきたいのに、)
(←ここにフォーカスが来る)

これだけならまあいいのですが、ここからフォーカスをAのすぐ後ろにもどして「B」を選択すると

helloA(←ここにBを表示させたいのに、)
B(←ここに来る)
(←さらにここにフォーカスが来る)

となってしまいます。
いろいろ試した結果、どうやら今のままではリストから選択した時は
どこにフォーカスがあってもそのテキストボックスの最終行に必ず挿入されるみたいです。
絶対にフォーカスのすぐ後ろに挿入させるようにするにはどうすればよいでしょうか。
できれば挿入した後に改行もしないでほしいです。




引用返信 編集キー/
■31607 / inTopicNo.2)  Re[1]: 挿入
□投稿者/ Hongliang (332回)-(2009/01/26(Mon) 11:08:08)
TextBox.AppendText は常に TextBox の末尾に文字列が追加されます。
キャレットの位置に文字列を追加したい場合は SelectedText に代入してください。もちろん、SelectionLength が 0 以外の場合は選択されてるわけですからそのまま SelectedText に代入すると選択箇所の上書きになるので、その辺は SelectionLength を 0 にするなりなんなりする必要があるかもしれません。
また改行については、普通 ListBox から取得したからといって改行が勝手に追加されたりはしません。可能性としては ListBox に追加するときに既に含まれているとかが考えられます。
引用返信 編集キー/
■31622 / inTopicNo.3)  Re[2]: 挿入
□投稿者/ .SHO (567回)-(2009/01/26(Mon) 13:19:30)
ListBox1.SelectedItemに改行が含まれているのでしょうから
改行を取ってから追加すればいいと思います。
引用返信 編集キー/
■31625 / inTopicNo.4)  Re[3]: 挿入
□投稿者/ lino. (5回)-(2009/01/26(Mon) 13:40:37)
Hongliangさん、.SHOさん、


コードをよくよく見てみたらなぜか入れる必要のないvbCrLfが。とってみると改行しなくなりました。
あと SelectedText に入れるとちゃんと思い通りになりました。ありがとうございます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -