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

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

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

Re[7]: Listboxで複数選択値


(過去ログ 25 を表示中)

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

■11246 / inTopicNo.1)  Listboxで複数選択値
  
□投稿者/ 転さ (1回)-(2007/12/10(Mon) 21:24:25)

分類:[C#] 

ご教授願います。
C#.netです
Listboxで複数選択をした場合
ネット上のサンプルでは
//選択されているすべての項目を取得する
Console.WriteLine("選択されているすべての項目:");
for (int i = 0; i < ListBox1.SelectedItems.Count; i++)
{
Console.WriteLine(" {0}", ListBox1.SelectedItems[i]);
}
で取得できるとありますがWEBアプリで実行した場合SelectedItemsというものが存在しません。
なのでどのように複数選択された値を受け取るのかご教授願います。
あと、なぜwindowsアプリなどにはあるのにwebアプリからは存在しないのか理由など教えていただけたらお願いいたします。
引用返信 編集キー/
■11255 / inTopicNo.2)  Re[1]: Listboxで複数選択値
□投稿者/ カンタービレ (125回)-(2007/12/11(Tue) 01:16:19)
No11246 (転さ さん) に返信
> ご教授願います。
> C#.netです
> Listboxで複数選択をした場合
> ネット上のサンプルでは
> //選択されているすべての項目を取得する
> Console.WriteLine("選択されているすべての項目:");
> for (int i = 0; i < ListBox1.SelectedItems.Count; i++)
> {
>     Console.WriteLine(" {0}", ListBox1.SelectedItems[i]);
> }
> で取得できるとありますがWEBアプリで実行した場合SelectedItemsというものが存在しません。
> なのでどのように複数選択された値を受け取るのかご教授願います。

http://msdn2.microsoft.com/ja-jp/library/01aeha49(VS.80).aspx
に書いてありマスが、Itemsコレクション数のループを行い、
Selectedプロパティを確認すると受け取れマス。
単一選択の場合、SelectedItemプロパティもサポートしていマス。

Console.WriteLine("選択されているすべての項目:");
for (int i = 0; i < ListBox1.Items.Count; i++)
{
    If ( ListBox1.Items[i].Selected )
    {
        Console.WriteLine(" {0}", ListBox1.Items[i]);
    }
}

> あと、なぜwindowsアプリなどにはあるのにwebアプリからは存在しないのか理由など教えていただけたらお願いいたします。
簡単に書くと、webアプリとwindowsアプリが全く違う性質のものなので、概観はそっくりでも中身は全く違うからデス。

引用返信 編集キー/
■11256 / inTopicNo.3)  Re[2]: Listboxで複数選択値
□投稿者/ 学習中 (3回)-(2007/12/11(Tue) 03:11:10)
No11255 (カンタービレ さん) に返信
> ■No11246 (転さ さん) に返信
>>ご教授願います。
>>C#.netです
>>Listboxで複数選択をした場合
>>ネット上のサンプルでは
>>//選択されているすべての項目を取得する
>>Console.WriteLine("選択されているすべての項目:");
>>for (int i = 0; i < ListBox1.SelectedItems.Count; i++)
>>{
>> Console.WriteLine(" {0}", ListBox1.SelectedItems[i]);
>>}
>>で取得できるとありますがWEBアプリで実行した場合SelectedItemsというものが存在しません。
>>なのでどのように複数選択された値を受け取るのかご教授願います。
>
> http://msdn2.microsoft.com/ja-jp/library/01aeha49(VS.80).aspx
> に書いてありマスが、Itemsコレクション数のループを行い、
> Selectedプロパティを確認すると受け取れマス。
> 単一選択の場合、SelectedItemプロパティもサポートしていマス。
>
> Console.WriteLine("選択されているすべての項目:");
> for (int i = 0; i < ListBox1.Items.Count; i++)
> {
> If ( ListBox1.Items[i].Selected )
> {
> Console.WriteLine(" {0}", ListBox1.Items[i]);
> }
> }
>
有難うございます
>>あと、なぜwindowsアプリなどにはあるのにwebアプリからは存在しないのか理由など教えていただけたらお願いいたします。
> 簡単に書くと、webアプリとwindowsアプリが全く違う性質のものなので、概観はそっくりでも中身は全く違うからデス。
こちらが未だ納得いかないのでもう少し掘り下げてお願いできますでしょうか。
WEBアプリの場合サーバに処理を渡すので出来ること出来ないことがあるのは分かります。
ですが、同じ.netを使っているのにリストボックスならばどちらも複数選択を出すことは簡単だと思います。なぜに
メソッドが違うのか。リストボックスならばすべてWEBとWINDOWSアプリをメソッドを同じにしてももんだいないはずなのに
なぜにでしょうか。
お願いします
引用返信 編集キー/
■11257 / inTopicNo.4)  Re[3]: Listboxで複数選択値
□投稿者/ れい (288回)-(2007/12/11(Tue) 06:48:05)
No11256 (学習中 さん) に返信
> ■No11255 (カンタービレ さん) に返信
> >>あと、なぜwindowsアプリなどにはあるのにwebアプリからは存在しないのか理由など教えていただけたらお願いいたします。
>>簡単に書くと、webアプリとwindowsアプリが全く違う性質のものなので、概観はそっくりでも中身は全く違うからデス。

私も上記説明では理由になっていないと思います。
同じように作ることも可能だったはずです。

Windows.Forms.ListBox
Windows.Forms.ListControl
Web.UI.WebControls.ListBox
Web.UI.WebControls.ListControl
Windows.Controls.ListBox
Windows.Controls.Selector
における、
SelectedIndex
SelectedIndices
SelectedItem
SelectedItems
SelectedValue
といったSelectedXXXプロパティの実装具合には
論理的必然性が私には感じられません。

知っている方がいたらぜひ教えてほしいと思います。
引用返信 編集キー/
■11273 / inTopicNo.5)  Re[4]: Listboxで複数選択値
□投稿者/ カンタービレ (126回)-(2007/12/11(Tue) 13:30:34)
> こちらが未だ納得いかないのでもう少し掘り下げてお願いできますでしょうか。
> WEBアプリの場合サーバに処理を渡すので出来ること出来ないことがあるのは分かります。
> ですが、同じ.netを使っているのにリストボックスならばどちらも複数選択を出すことは簡単だと思います。なぜに
> メソッドが違うのか。リストボックスならばすべてWEBとWINDOWSアプリをメソッドを同じにしてももんだいないはずなのに
> なぜにでしょうか。
> お願いします


> 私も上記説明では理由になっていないと思います。
> 同じように作ることも可能だったはずです。

確かにおっしゃる通りだと思いマス。
ただこの理由はMSの開発者にしか分からないのではないでしょうか。

私なりの解釈デスが・・・
ベースの異なるコントロールを統一されたインターフェースで
実装する理由は個々の機能の観点に立ってみると、統一することが
どれだけ重要なメリットとして.net開発時に位置づけられたでしょう?
私は異なるベースを主として派生するクラスが作成された結果として
類似のコンポーネントがそれぞれに出来ていったのだと解釈してマス。

いずれかのListBoxが存在した上で統一されたインターフェースを実装する
目的で別のListBoxが作成されているわけではないことが、
論理的必然性を持たない理由なんじゃないかと思うのデス。

統一可能なところは開発のメリットを考え統一すべきだ、というのも
当然あるべきお話しだと思いマス。

ただ、統一するという前提を持たないで設計されているとするならば
片方にあって、片方にない理由というよりも事実として受け止めるしか
ないと思ってマス。
引用返信 編集キー/
■11276 / inTopicNo.6)  Re[5]: Listboxで複数選択値
□投稿者/ れい (289回)-(2007/12/11(Tue) 14:21:49)
No11273 (カンタービレ さん) に返信
> いずれかのListBoxが存在した上で統一されたインターフェースを実装する
> 目的で別のListBoxが作成されているわけではないことが、
> 論理的必然性を持たない理由なんじゃないかと思うのデス。

つまり、そこまで考えてなかったということですよね。
たぶんそうなんでしょうね。

このせいで困った人も何人かはいたはずです。
合理的理由があれば納得がいくし、
何より覚えやすいので、
すごく残念です。

WebControls.ListBoxとForms.ListBoxのどっちが
SelectedIndicesを持ってるのか、
いまだに覚えられません。

嘘でもいいので合理的理由が欲しいです。

教えて偉い人!
引用返信 編集キー/
■11278 / inTopicNo.7)  Re[6]: Listboxで複数選択値
□投稿者/ Hongliang (215回)-(2007/12/11(Tue) 14:53:14)
オブジェクト指向的にはリストアイテムが選択されているかどうかってのはリストアイテム自身に聞くのが自然。
よって System.Web.UI.WebControls.ListItem に Selected が用意されているしそれで十分なのでわざわざ ListBox には用意しなかった。
Ssytem.Windows.* の ListBox は ListItem ではなく直接 Object を持つことになっていてアイテム自身に聞くと言う手段を取れないので苦肉の策として選択済みアイテムのコレクションを取得できるメソッドを ListBox に用意した。

と言う妄想。
なんで ListItem を使うかどうかが分かれたのは、本質的にデータを文字列で扱う Web と Object で扱えるローカルの差かしらん?
引用返信 編集キー/
■11279 / inTopicNo.8)  Re[7]: Listboxで複数選択値
□投稿者/ れい (290回)-(2007/12/11(Tue) 15:10:45)
No11278 (Hongliang さん) に返信
> と言う妄想。

!!
さすが偉い人!
さすが偉い人の妄想!

親のListControlなどの実装を見ても、
説明の合理性を裏付ける根拠ばかり見つかります。

またひとつ真実見つけた気がします。
今後誰かに聞かれたらこう答えることにします。

質問者ではありませんが、大変勉強になりました。
ありがとうございました。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -