none
ListBox1.Itemsについて。 RRS feed

  • 質問

  • 本当にたびたび、申し訳ありません。

    リストボックスで、選択されている文字列を収得しようとしまして、

    Label1.Text = Me.ListBox1.Items(Me.ListBox1.SelectedIndex).ToString

    と記述してみましたが、Label1には

    System.Data.DataRowView って表示されます。

    確かに、

    Me.ListBox1.SelectIndex は、Integer で正しい数値が値として収得されています。

    どうか不足分を教えてください。

    本当に申し訳ありません。

    2009年1月6日 13:41

回答

  • データバインドをされたのですね? であれば、以下のようになります。

     

    ListBox1.GetItemText(ListBox1.SelectedItem)

     

    ListBoxで複数の行を選択できるようにしている場合は、SelectedItemsを用いて一つずつ取得するようにすれば良いでしょう。

     

    また、DisplayMemberとValueMemberが同じであれば、ValueMemberの値を取得しても良いので、ListBox1.SelectedValueで代用することもできます。

    2009年1月6日 15:46
    モデレータ
  • 私の投稿を読み直して誤解を与えそうな書き方でしたので、以下のことを追加しておきます。

     

    ListBox1.GetItemText(ListBox1.SelectedItem)

    は、データバインドを行わない時も有効です。つまり、例えばDataReaderで1件ずつ読みながらListBox1.Items.Addメソッドで1件ずつListBoxに追加した場合でも問題なく使用できます。

     

    ListBoxの値を取得したり操作する場合、実際にはどのような仕組みでListBoxに値が表示されているのかを知っていることは重要です。それによって、どのようなことを行えば目的が達せられるか想像できるようになります。がんばってください。

    2009年1月7日 6:02
    モデレータ

すべての返信

  • データバインドをされたのですね? であれば、以下のようになります。

     

    ListBox1.GetItemText(ListBox1.SelectedItem)

     

    ListBoxで複数の行を選択できるようにしている場合は、SelectedItemsを用いて一つずつ取得するようにすれば良いでしょう。

     

    また、DisplayMemberとValueMemberが同じであれば、ValueMemberの値を取得しても良いので、ListBox1.SelectedValueで代用することもできます。

    2009年1月6日 15:46
    モデレータ
  • trapemiyaさん、ありがとうございました。

    うまく、表示できました。

    本当に、初心者なので、データバインドっていう表現さえも知らないほどです。

    でも、一つ一つ、覚えていきます。

    ありがとうございました。

     

    2009年1月7日 4:58
  • 私の投稿を読み直して誤解を与えそうな書き方でしたので、以下のことを追加しておきます。

     

    ListBox1.GetItemText(ListBox1.SelectedItem)

    は、データバインドを行わない時も有効です。つまり、例えばDataReaderで1件ずつ読みながらListBox1.Items.Addメソッドで1件ずつListBoxに追加した場合でも問題なく使用できます。

     

    ListBoxの値を取得したり操作する場合、実際にはどのような仕組みでListBoxに値が表示されているのかを知っていることは重要です。それによって、どのようなことを行えば目的が達せられるか想像できるようになります。がんばってください。

    2009年1月7日 6:02
    モデレータ
  • ありがとうございます。

    まだ、仕組みなどは理解できそうもありませんが、頑張ってみます。

    ありがとうございました。

    2009年1月7日 12:58