- PR -

[C#] textboxからlistboxにテキストを代入する方法

投稿者投稿内容
Syou
会議室デビュー日: 2006/02/03
投稿数: 13
投稿日時: 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の項目に追加するいい案があればお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-03 21:28
DisplayMember の値なのか ValueMember の値なのかわかりませんが、
全体を Like な検索で舐めて合致したもの (近いもの) の index を Select することになります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-02-03 21:33
DataSourceは使っていないという前提で。
引用:

Syouさんの書き込み (2006-02-03 19:43) より:
指定されたインデックス番号の項目を変更するにはどうすればいいのでしょうか?


普通に
コード:
listBox1.Items[listBox1.SelectedIndex] = textBox1.Text;


で良いような気がしますが。
//listBox1.SelectedIndexが正当かどうかの確認は必要ですが。

引用:

また、他にTextBoxのテキストからListboxの項目に追加するいい案があればお願いします。


listBox.ItemsにtextBox.TextをAddするだけじゃないですか?
Syou
会議室デビュー日: 2006/02/03
投稿数: 13
投稿日時: 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で使うばっかりだと思っていました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-04 00:05
引用:

Syouさんの書き込み (2006-02-03 23:16) より:

listBox1.Items[listBox1.SelectedIndex] = textBox1.Text; で変更することが出来ました。


おー、こんな風にできるとは私も知りませんでした。
勉強になりました。

引用:

ItemsはlistBox1.Items.Addで使うばっかりだと思っていました。


Items の型を見てください。
ListBox.ObjectCollection という型です。
コレクションであることがわかります。

コレクションとは何かは、このあたりが参考になると思います。

  コレクションの定義

一般的に、追加 (Add) もできますし削除 (Remove) もできますし、
インデックスによる検索 (Items[]) などがサポートされています。

ListBox.ObjectCollection 以外にも多数あるので、
ICollection インターフェースなども見ておくと良いかもしれません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-02-04 09:33
引用:

じゃんぬねっとさんの書き込み (2006-02-04 00:05) より:
引用:

Syouさんの書き込み (2006-02-03 23:16) より:

listBox1.Items[listBox1.SelectedIndex] = textBox1.Text; で変更することが出来ました。


おー、こんな風にできるとは私も知りませんでした。
勉強になりました。


じゃんぬねっとさんともあろう人が?
信じられない・・・

ところで、スレ主さんはBBコードを使わずに、どうやってインデントしたんでしょうか?

すみません、ゴミでした。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-04 12:26
引用:

R・田中一郎さんの書き込み (2006-02-04 09:33) より:

じゃんぬねっとさんともあろう人が?
信じられない・・・


言われて見て、もう 1 度良く見たら、上書きしてるだけじゃないですか... orz
合致する (最も近似な) アイテムを表示するのだと思ってました。(質問の意味も)

> 指定されたインデックス番号の項目を変更するにはどうすればいいのでしょうか?

これを読み間違えていたのが敗因ですね。

これくらいなら流石に私のようなおバカさんでも知ってます。
じゃなきゃ、List 系のコントロールが使えないことを意味しちゃいます... (>_<)

引用:

ところで、スレ主さんはBBコードを使わずに、どうやってインデントしたんでしょうか?


恥からお救い頂いたお礼に、少しだけ。(^^)

HTML の世界では、先頭の (または連続する) 半角スペースは無視されますが、全角スペースは無視されません。

ただし、white-space によって挙動は異なります。
「&nbsp;」を使えば何とか表現できますが、W3C 信者からは非難の嵐でしょうねw

[code] を使った場合は、pre 要素が使われます。
この要素は整形済みテキストなので、半角スペースが無視されません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-02-04 13:12
引用:

じゃんぬねっとさんの書き込み (2006-02-04 12:26) より:

言われて見て、もう 1 度良く見たら、上書きしてるだけじゃないですか... orz



やはり読み違えていたんですね。

引用:

じゃんぬねっとさんの書き込み (2006-02-04 12:26) より:

HTML の世界では、先頭の (または連続する) 半角スペースは無視されますが、全角スペースは無視されません。



 全角スペースでインデントつけてたんですね。
 なるほど、全角スペースは、本来文章を書く時は一段下げるわけだから、
先頭についていればそのまま表示するのが正しい表現ですよね。
 

スキルアップ/キャリアアップ(JOB@IT)