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

わんくま同盟

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

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

ツリー一括表示

ListBox の使い方 /星は昴 (24/11/14(Thu) 14:18) #103431
Re[1]: ListBox の使い方 /kiku (24/11/14(Thu) 14:52) #103432
Re[1]: ListBox の使い方 /魔界の仮面弁士 (24/11/14(Thu) 15:36) #103434
│└ Re[2]: ListBox の使い方 /星は昴 (24/11/14(Thu) 17:41) #103435 解決済み
Re[1]: ListBox の使い方 /WebSurfer (24/11/14(Thu) 15:31) #103433


親記事 / ▼[ 103432 ] ▼[ 103434 ] ▼[ 103433 ]
■103431 / 親階層)  ListBox の使い方
□投稿者/ 星は昴 (1回)-(2024/11/14(Thu) 14:18:57)

分類:[C#] 

ListBox について

https://dobon.net/vb/dotnet/control/lbselectitem.html

を見ているのですが、もっと基本的なことがわかりません。

 ListBox に表示されている項目のテキストを取り出すにはどうしたらいいのですか。まったくの感で(笑)
   for (int i = 0; ListBox.Items.Count - 1; i++)
      string fName = ListBox.Items[i];

とやりましたが、全然だめです。

 また、プロパティの表示にはListBoxにはTextプロパティは見当たらないのですが
   string fName = ListBox.Text;
がエラーにならないのはなぜですか?


[ □ Tree ] 返信 編集キー/

▲[ 103431 ] / 返信無し
■103432 / 1階層)  Re[1]: ListBox の使い方
□投稿者/ kiku (445回)-(2024/11/14(Thu) 14:52:15)
2024/11/14(Thu) 14:56:22 編集(投稿者)

No103431 (星は昴 さん) に返信
>  また、プロパティの表示にはListBoxにはTextプロパティは見当たらないのですが
>    string fName = ListBox.Text;
> がエラーにならないのはなぜですか?

上記の件は、見ているサイトに説明が記述されています。
読み飛ばさずに、一通り読んで、サンプルも提示されているので
動作させてみることをお勧めます。

検証に利用したソースを提示すると
回答者は回答しやすくなるので
ピンポイントで原因がわかるかもしれません。
回答者が回答しやすいように配慮した方が良いと思います。
[ 親 103431 / □ Tree ] 返信 編集キー/

▲[ 103431 ] / ▼[ 103435 ]
■103434 / 1階層)  Re[1]: ListBox の使い方
□投稿者/ 魔界の仮面弁士 (3812回)-(2024/11/14(Thu) 15:36:07)
2024/11/15(Fri) 12:15:36 編集(投稿者)

No103431 (星は昴 さん) に返信
>  ListBox に表示されている項目のテキストを取り出すにはどうしたらいいのですか。まったくの感で(笑)
>    for (int i = 0; ListBox.Items.Count - 1; i++)
>       string fName = ListBox.Items[i];

DisplayMember プロパティが未設定なら
 = listBox1.Items[i].ToString()
でも良いのですけれど、バインド時にも対応できるよう汎用的に書くなら、
 = listBox1.GetItemText(listBox1.Items[i]);
ですね。

全件まとめて取り出すならこんな感じ。

string[] names = listBox1.Items.OfType<object>().Select(o => listBox1.GetItemText(o)).ToArray();


また、「選択されている項目」については、listBox1.SelectedIndex で
選択されている先頭項目の番号(0〜)が返されます。未選択時は -1 です。

複数選択モード(SelectionMode プロパティで設定)が指定されている場合は、
listBox1.SelectedIndex の代わりに listBox1.SelectedIndices
listBox1.SelectedItem  の代わりに listBox1.SelectedItems
という複数形プロパティを使います。(SelectedValue の複数形はありません)

現在選択されている項目のテキストならば、単一選択であれば
listBox1.GetText(listBox1.SelectedItem) ですが、ほぼ同じものが
listBox1.Text でも得られます。複数選択の時には、
上記の複数形プロパティをループ処理して GetText メソッドで取り出しましょう。


> string fName = ListBox.Text;
> がエラーにならないのはなぜですか?
ListBox は Control クラスを継承しており、
Text プロパティは継承元の Control クラスで定義されたメンバーです。

継承先のコントロールによって、Text が返す情報は異なりますが、
どんなコントロールであっても Text というプロパティは存在しますので、
それ自体がエラーになることはありません。

ただし一部のコントロールでは、Text プロパティが不可視設定されている
場合もあります。たとえば NumericUpDown や DataGridView などです。
これらでも Text プロパティを呼び出せはしますが、使うべきではありません。
[ 親 103431 / □ Tree ] 返信 編集キー/

▲[ 103434 ] / 返信無し
■103435 / 2階層)  Re[2]: ListBox の使い方
□投稿者/ 星は昴 (2回)-(2024/11/14(Thu) 17:41:39)
No103434 (魔界の仮面弁士 さん) に返信
 ありがとうございました。
解決済み
[ 親 103431 / □ Tree ] 返信 編集キー/

▲[ 103431 ] / 返信無し
■103433 / 1階層)  Re[1]: ListBox の使い方
□投稿者/ WebSurfer (2933回)-(2024/11/14(Thu) 15:31:34)
No103431 (星は昴 さん) に返信
> ListBox について

ListBox というのは、ASP.NET Web Forms, WinForms, WPF のいずれにもあるのですが、
何の ListBox ですか?

(dobon の記事を見れば分かるというのはナシでお願いします)

あと、ターゲットフレームワークは何か、Visual Studio のバージョンは何かも書いて
ください。
[ 親 103431 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -