リストボックスの選択された項目の合計

タグの編集
投稿者 arin  (学生) 投稿日時 2009/5/20 07:35:14
リストボックス1の選択された値の合計をテキストボックス1に表示したいのですが
やり方が良く分かりません。もう一つの条件として何も選択されていなければ、リストのすべての和を表示するあります。
 
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 Dim Total As Double = 0
if Listbox1.selecteditems.Count > 0 then

何回か試行錯誤しましたがこの後がどうも分かりません・・お返事よろしくお願いします
投稿者 neptune  (社会人) 投稿日時 2009/5/20 08:16:17
このサイトの
VB.NETサンプル

3.すべての選択されている項目を取得する例
は役に立ちませんか?

後、データ型変換関数、又はCtype、を調べると文字列型から数値型に変換できる方法が判ります。
これで和も計算できますね。
投稿者 arin  (学生) 投稿日時 2009/5/20 10:16:27

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim total As Integer = 0

        Dim x As Boolean = CType(selecteditems, Boolean)
        If ListBox1.SelectedItems.Count > 0 Then
            For Each total In ListBox1.SelectedItems

                TextBox3.Text &= total & vbNewLine
            Next
        End If
    End Sub
End Class
例ではCType(sender, button)でsenderをbutton型にするとあったのでSelectedItemsを
Booleanにするつもりでしたのですがエラーがでちゃいました。どこを直せばいいでしょうか?
投稿者 ヴァン  (社会人) 投稿日時 2009/5/20 18:13:25
こんにちは。

>例ではCType(sender, button)でsenderをbutton型にするとあったのでSelectedItemsを
>Booleanにするつもりでしたのですがエラーがでちゃいました。どこを直せばいいでしょうか?

何がしたいのか判りませんが、

CType(sender, button)

これはobject型で渡されたsenderがbutton型なので成立するキャストです。

Dim x As Boolean = CType(selecteditems, Boolean)

selecteditemsはSelectedObjectCollectionなのでどうやってもBooleanにキャストは無理です。
投稿者 刈谷勇  (社会人) 投稿日時 2009/5/20 18:50:14
なんか、学校の課題のような気が・・・

問題点だけ挙げときます。
1)ヴァンさんのご指摘の点
2)変数xを宣言しているが未使用
3)ListBox1が未選択のときの処理がない
4)TextBox3.Text &= total & vbNewLineは選択されているものの合計を取ろうとしているのだと思うのですが、これだと文字列の連結になってしまう

基礎が出来ていないので、ここの最初から読んで基礎をつけたほうがいいと思います。
投稿者 ヴァン  (社会人) 投稿日時 2009/5/20 20:21:57
もうちょっと書きます。

選択された値の合計とありますが、全ての値の合計なら出来るのでしょうか?

また、Itemsには何型が入っていますか?
投稿者 るしぇ  (社会人) 投稿日時 2009/5/20 20:47:11
> SelectedItemsをBooleanにするつもりでしたのですが
SelectedItems は複数形の s が最後に付いている様に
選択されているアイテムを複数まとめて(コレクションの
形で)取得します。
# つまり取得されたアイテムは既に選択状態のものが
# リストアップされています。

ところが全く調べてないので、選択されてるかどうかの
判定の Boolean に変換したいのかもww

学校の課題として出された一番単純なプログラムの
理解なら、Item を総なめして Selected プロパティで
選択されているかどうか判断してって課題だろうから、
自分で十分勉強しないで掲示板で答えをもらっても
0点になると思います。

オンラインヘルプもあるんだし、無料版を手に入れてる
ならローカルのヘルプもあるだろうし、多少で良いから
自分がどんな命令を書いて実行しているのか調べたら?
[ListBox.SelectedItem プロパティ]
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.listbox.selecteditem(VS.80).aspx
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/5/20 22:50:17
Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
  Dim sel As IList = ListBox1.SelectedItems
  TextBox1.Text = CStr(Aggregate p In If(sel.Count = 0, ListBox1.Items, sel) Into Sum(CDbl(p)))
End Sub
投稿者 neptune  (社会人) 投稿日時 2009/5/21 01:47:19
皆さんこんにちは

アドバイスは出揃っているみたいなのでパスするとして、

魔界の仮面弁士さん>
これが新兵器LINQの威力ですか。ものすごく便利そうですね。
この中学校の講座も読んでないんで、今度読んでみよう。

課題だとしても、・・・・コピペじゃいくらなんでも怪しまれますね。^ ^;;
さすが。