- - PR -
[C#] textboxからlistboxにテキストを代入する方法
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-02-03 19:43
C#で、textboxからlistboxにテキストを代入しようと思っています。
listboxの選択項目が変更された場合、textbox6へのテキスト代入は textBox6.Text = listBox1.SelectedItem.ToString(); ですることができました。 同じようにtextboxの内容が1文字でも変更された場合、listboxの選択された項目へ変更されたtext内容を、反映させようとしました。 以下がその内容です。 private void textBox6_TextChanged(object sender, EventArgs e) { listBox1.SelectedItem = textBox6.Text.TosString(); } ところが、コンパイルはできるものの上の文ではTextBoxのテキストからListboxの項目のテキストへの反映は行われませんでした。 調べてみたところ、どうやらオブジェクトである以上、テキストで内容を変更しているとリストボックスを選択しているとみなされないようです。 そこで、ListBoxの中で選択されている項目の 0 から始まるインデックス番号を取得して、その値の項目を変更しようとしました。 public int list_path; private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { if (listBox1.SelectedItem != null) { int list_path = listBox1.SelectedIndex; } } あとは、インデックス番号の項目を変えればいいのですがそのパブリックプロパティが分かりません。 指定されたインデックス番号の項目を変更するにはどうすればいいのでしょうか? また、他にTextBoxのテキストからListboxの項目に追加するいい案があればお願いします。 | ||||||||||||
|
投稿日時: 2006-02-03 21:28
DisplayMember の値なのか ValueMember の値なのかわかりませんが、
全体を Like な検索で舐めて合致したもの (近いもの) の index を Select することになります。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-02-03 21:33
DataSourceは使っていないという前提で。
普通に
で良いような気がしますが。 //listBox1.SelectedIndexが正当かどうかの確認は必要ですが。
listBox.ItemsにtextBox.TextをAddするだけじゃないですか? | ||||||||||||
|
投稿日時: 2006-02-03 23:16
>じゃんぬねっとさん
DataSourceは使っていません。 >全体を Like な検索で舐めて合致したもの (近いもの) の index を Select することになります。 ということに関しては全体を検索してその中から1つ、テキストを見つけ出して変更するということでしょうか?すいません自分はまだまだ知識不足なので・・ >Hongliangさん listBox1.Items[listBox1.SelectedIndex] = textBox1.Text; で変更することが出来ました。ありがとうございます。 listBox1.Items[int index]で項目内を設定できたんですね。Itemsでそうできるとは知りませんでした。まだまだ自分勉強不足ですね・・・。 ItemsはlistBox1.Items.Addで使うばっかりだと思っていました。 | ||||||||||||
|
投稿日時: 2006-02-04 00:05
おー、こんな風にできるとは私も知りませんでした。 勉強になりました。
Items の型を見てください。 ListBox.ObjectCollection という型です。 コレクションであることがわかります。 コレクションとは何かは、このあたりが参考になると思います。 コレクションの定義 一般的に、追加 (Add) もできますし削除 (Remove) もできますし、 インデックスによる検索 (Items[]) などがサポートされています。 ListBox.ObjectCollection 以外にも多数あるので、 ICollection インターフェースなども見ておくと良いかもしれません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-02-04 09:33
じゃんぬねっとさんともあろう人が? 信じられない・・・ ところで、スレ主さんはBBコードを使わずに、どうやってインデントしたんでしょうか? すみません、ゴミでした。 | ||||||||||||
|
投稿日時: 2006-02-04 12:26
言われて見て、もう 1 度良く見たら、上書きしてるだけじゃないですか... orz 合致する (最も近似な) アイテムを表示するのだと思ってました。(質問の意味も) > 指定されたインデックス番号の項目を変更するにはどうすればいいのでしょうか? これを読み間違えていたのが敗因ですね。 これくらいなら流石に私のようなおバカさんでも知ってます。 じゃなきゃ、List 系のコントロールが使えないことを意味しちゃいます... (>_<)
恥からお救い頂いたお礼に、少しだけ。(^^) HTML の世界では、先頭の (または連続する) 半角スペースは無視されますが、全角スペースは無視されません。 ただし、white-space によって挙動は異なります。 「&nbsp;」を使えば何とか表現できますが、W3C 信者からは非難の嵐でしょうねw [code] を使った場合は、pre 要素が使われます。 この要素は整形済みテキストなので、半角スペースが無視されません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-02-04 13:12
やはり読み違えていたんですね。
全角スペースでインデントつけてたんですね。 なるほど、全角スペースは、本来文章を書く時は一段下げるわけだから、 先頭についていればそのまま表示するのが正しい表現ですよね。 |