• ベストアンサー

Checkboxの数え方

完全な素人です 1つのGroupBox内にある複数のCheckboxの中から チェックされているCheckboxの数を数えたいのですが どうしたらいいのでしょうか? ちなみにGroupBoxも複数あります どなたか教えてください、宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ttkai00
  • ベストアンサー率58% (18/31)
回答No.3

2002 でしたか。TryCast は 2005 からなのでエラーになりますね。DirectCast は使えましたよね…実はあまり知らないんですが。DirectCast を使うなら以下。 Private Function CountChecked(ByVal targetGroupBox As GroupBox) As Integer Dim cnt As Integer = 0 For Each ctl As Control In targetGroupBox.Controls If TypeOf ctl Is CheckBox Then Dim cb As CheckBox = DirectCast(ctl, CheckBox) If cb.Checked Then cnt += 1 End If End If Next Return cnt End Function DirectCast が使えないようなら、DirectCast を CType に変えてみてください。

napple_001
質問者

お礼

いけました! なぜPrivate Function なんだ?ってところからでしたが 大体理解できました、なんとかV.Bの入口が見えてきた気がします。 ありがとうございました。

その他の回答 (2)

  • ttkai00
  • ベストアンサー率58% (18/31)
回答No.2

VB のバージョンは? 2005 以降だと思って回答しておきます。 こんなメソッドを作ればよいでしょうか。 Private Function CountChecked(ByVal targetGroupBox As GroupBox) As Integer Dim cnt As Integer = 0 For Each ctl As Control In targetGroupBox.Controls Dim cb As CheckBox = TryCast(ctl, CheckBox) If cb IsNot Nothing cnt += 1 End If Next Return cnt End Function

napple_001
質問者

お礼

.Net 2002を使用しているためか、 とりあえずエラーがでてしまいます。 勉強でやっているので参考にさせていただいて後はなんとかやってみます ありがとうございました。

  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.1

これをうまくアレンジしてやってみてください。 フォーム名とコントロール名を元にオブジェクトを取得します。 ''' <summary> ''' フォームに配置されているコントロールを名前で探す ''' (フォームクラスのフィールドをフィールド名で探す) ''' </summary> ''' <param name="frm">コントロールを探すフォーム</param> ''' <param name="name">コントロール(フィールド)の名前</param> ''' <returns>見つかった時は、コントロールのオブジェクト。 ''' 見つからなかった時は、null(VB.NETではNothing)。</returns> Public Function FindControlByFieldName( _ ByVal frm As Form, ByVal name As String) As Object 'まずプロパティ名を探し、見つからなければフィールド名を探す Dim t As System.Type = frm.GetType() Dim pi As System.Reflection.PropertyInfo = _ t.GetProperty(name, _ System.Reflection.BindingFlags.Public Or _ System.Reflection.BindingFlags.NonPublic Or _ System.Reflection.BindingFlags.Instance Or _ System.Reflection.BindingFlags.DeclaredOnly) If Not pi Is Nothing Then Return pi.GetValue(frm, Nothing) End If Dim fi As System.Reflection.FieldInfo = _ t.GetField(name, _ System.Reflection.BindingFlags.Public Or _ System.Reflection.BindingFlags.NonPublic Or _ System.Reflection.BindingFlags.Instance Or _ System.Reflection.BindingFlags.DeclaredOnly) If fi Is Nothing Then Return Nothing End If Return fi.GetValue(frm) End Function

napple_001
質問者

お礼

ちょっとレベル高そうな感じですね・・・。 勉強して参考にさせて頂きます ありがとうございました。

関連するQ&A

  • CheckBoxについて

    CheckBoxにチェックを入れていって、その数の合計を出したいんですが、どんなプログラムを書けばいいですか? まだ初心者なのでよく分かりません(><)教えて下さい。 CheckBoxはいくつかのグループからなっていて、グループごとに数えていきたい(1グループでは3つのチェックが入った、2グループでは4つのチェックが入ったなど)んですが、どんなプログラムでしょうか。。

  • checkboxについて

    下のように初期状態でcheckboxにチェックされているのを buttonのresetをおすとjavascriptでチェック解除するということはできますか? <INPUT TYPE="checkbox" name="check_no1" checked>

  • checkboxの判定

    初めまして、みなさんよろしくお願いします。 早速ですが質問させていただきたいと思います。 ※画面に30個程のcheckboxがあるのですが(それぞれのcheckboxには 1~30前後の番号を振っています)チェックされたcheckboxを取得する事は 出来ますでしょうか? 出来るとしたらPHPでしょうか?  それともjavascriptでしょうか? ちなみにjavascriptは全く解りません。(>_<) 身勝手な質問ですが、ご教授よろしくお願いします。

    • ベストアンサー
    • HTML
  • checkboxのvalue値を動的にしたい

    strutsタグのcheckboxのvalue値を動的に変更したいのですがうまく出来ません。 iterateでループし、チェックボックスが複数個(状況によって個数が変化する)できます。 このときvalue値を動的にして、submitしたときにどこのチェックボックスがチェックされたかを知りたい為に動的にしたいと考えています。 見当違いなやり方かもしれません。 どうぞ、ご教授下さい。宜しくお願いいたします <nest:iterate id="selectdata" name="selectAll" indexId="idx"> <tr> <td> <html:checkbox name="selectdata" property="checkBox" value=" ここの値を動的にしたい " /> </td> <td> <bean:write name="selectdata" property="user_id" /> </td> </tr> </nest:iterate> できればbean:writeのuser_idを入れることが出来るのならそれが一番良いのですが・・・ strutsタグのネストは出来ないのでしょうか?

    • ベストアンサー
    • Java
  • javascript checkbox

    完全に初心者です。。 下記のスクリプトをもとに、 ■チェックAをチェックしたら全てチェックされる ■またチェックAをチェックしたら全て外れる ようにしたいです。。 でも何がダメか分かりません。。 一部を書くのではなく出来ればスクリプト全ていただけたらと思います。 あともし宜しければチェックAをチェックしたら、1~6をチェックできないようにもしたいです。。 ご教授よろしくお願いします。。 <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE></TITLE> <SCRIPT language="JavaScript"> function check(){ for(i=1; i<7; i++){ document.form1.elements[ch[i]].checked = true; } } </SCRIPT> </HEAD> <BODY> 全てのチェックボックスをチェック/解除 <FORM name="form1"> <p><INPUT type="checkbox" id="ch" onclick="check()">チェックA</p>   <INPUT type="checkbox" id="ch1">チェック1   <INPUT type="checkbox" id="ch2">チェック2   <INPUT type="checkbox" id="ch3">チェック3<BR><BR>   <INPUT type="checkbox" id="ch4">チェック4   <INPUT type="checkbox" id="ch5">チェック5   <INPUT type="checkbox" id="ch6">チェック6<BR><BR>   <BR> </FORM> </BODY> </HTML>

  • checkbox ループ

    下記のスクリプトだと、 デバックが16になってしまいます。 これをどうにかして、 AをチェックしたらA内だけをループ、 BをチェックしたらB内だけをループさせたいんですが、 どこをどのように修正すればいいですか?? スクリプトをかなり変えるのは避けたいです。。 教えてください。。 <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE></TITLE> <SCRIPT language="JavaScript"> function check(n){ document.getElementById('debug').innerHTML = "デバッグ情報"; document.getElementById('debug').innerHTML = document.getElementById('debug').innerHTML + "<br>lengthは" + document.form1.length; for(i=1; i<=document.form1.length; i++){ if(document.form1.elements["ch" + n].checked){ document.form1.elements["ch" + n + "-" + i].checked = true; document.form1.elements["ch" + n + "-" + i].disabled = true; }else{ document.form1.elements["ch" + n + "-" + i].checked = false; document.form1.elements["ch" + n + "-" + i].disabled = false; } } } </SCRIPT> </HEAD> <BODY> 全てのチェックボックスをチェック/解除 <FORM name="form1"> <p><INPUT type="checkbox" id="ch1" onclick="check(1)">チェックA</p> <INPUT type="checkbox" id="ch1-1">チェック1 <INPUT type="checkbox" id="ch1-2">チェック2 <INPUT type="checkbox" id="ch1-3">チェック3<BR><BR> <INPUT type="checkbox" id="ch1-4">チェック4 <INPUT type="checkbox" id="ch1-5">チェック5 <INPUT type="checkbox" id="ch1-6">チェック6<BR><BR> <BR> <p><INPUT type="checkbox" id="ch2" onclick="check(2)">チェックB</p> <INPUT type="checkbox" id="ch2-1">チェック1 <INPUT type="checkbox" id="ch2-2">チェック2 <INPUT type="checkbox" id="ch2-3">チェック3 <INPUT type="checkbox" id="ch2-4">チェック4<BR><BR> <INPUT type="checkbox" id="ch2-5">チェック5 <INPUT type="checkbox" id="ch2-6">チェック6 <INPUT type="checkbox" id="ch2-7">チェック7 <INPUT type="checkbox" id="ch2-8">チェック8<BR><BR> <BR> </FORM> <p id="debug"></p> </BODY> </HTML>

  • checkboxについておしえてください

    <form action=" " method="post"> <input type="checkbox" name=" figure" value="1"><img src="a.png"> <input type="checkbox" name=" figure" value="2"><img src="b.png"> <input type="checkbox" name=" figure" value="3"><img src="c.png"> <input type="checkbox" name=" figure" value="4"><img src="a.png"> <input type="checkbox" name=" figure" value="5"><img src="b.png"> <input type="submit" value="送信する"> </form> とした場合に、絵の左にくるチェックボックスの位置を、添付した図のように位置を図の中にもってこれないかと考えています。できれば、大きさも変えたいと考えています。 cssでできるのでしょうか? cssじゃない方法などもあるのでしょうか?よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • checkBox(初心者)VB6.0

    checkbox1とcheckbox2があって checkbox1をクリックするとcheckbox2にチェックが自動で入ってそのcheckbox2の内容を自動で読み込むことって出来ますか?

  • checkboxクリックされていないidを取得

    <form id="chkform"> <input type="checkbox" name="check" value="aaa" id="aaa">aaa <input type="checkbox" name="check" value="bbb" id="bbb">bbb <input type="checkbox" name="check" value="ccc" id="ccc">ccc                   ・                   ・                    ・ <input type="checkbox" name="check" value="zzz" id="zzz">zzz </form> チェックボックスの複数の項目の内、チェックされていない全てのIDを取得する方法を教えてください。 よろしくお願いいたします。

  • ExcelVBA WorkSheet上の全てのCheckBoxをON・OFFする

    ご教授いただければと思います。 環境はExcel2000とWindows2000です。 現在このようなシートがあります -----WorkShet-----  ↓全てのチェックボックスをONにするコマンドボタン  □  ↓CheckBox1_1 ↓CheckBox2_1 ↓CheckBox3_1  □ □ □  ↓CheckBox1_2 ↓CheckBox2_2 ↓CheckBox3_2  □ □ □ ------------------ 「全てのチェックボックスをONにするコマンドボタン」を押す事により、 全てのCheckBoxをOnにしたいのです。 現在はCheckBox1_2.Vlue = Trueのようにしています。 これからCheckBoxの数が増える予定なので、いちいちコードを増やす事のなくしたいのですが、どのようにしたらよいでしょうか? よろしくお願いします。

専門家に質問してみよう