DOBON.NET DOBON.NETプログラミング掲示板過去ログ

条件の書き方

分類:[.NET]

2005/12/09(Fri) 16:09:05 編集(投稿者)

現在、フォーム画面にCheckBoxを25個作っています。
そのCheckBoxどれか一つにチェックがついてれば
次に進める、何もチェックがなけらばMessageBoxを
表示させるようにしたいんですけど、どういう
文にすればいいか悩んでます。自分なりに考えたんですけど・・・。
どなたか教えてくれませんか?
アドバイスだけでもお願いします。
うまく伝わるか心配です。。。
  • 題名: Re[1]: 条件の書き方
  • 著者: Blue
  • 日時: 2005/12/09 16:46:55
  • ID: 14147
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
2005/12/09(Fri) 16:47:19 編集(投稿者)

フォーム上のチェックボックスコントロールをFor Eachでまわして、
チェックするのはどうでしょうか?

For Each コントロール用変数 In フォーム上のコントロールコレクション
    If コントロール用変数がチェックボックスならば Then
        If チェックがついているか Then
            次へ進む
        End If
    End If
Next

メッセージボックス表示

てな感じで。(VB.NETベースですけど。)
#某所のJTさんかな?

> 現在、フォーム画面にCheckBoxを25個作っています。
> そのCheckBoxどれか一つにチェックがついてれば
> 次に進める、何もチェックがなけらばMessageBoxを
> 表示させるようにしたいんですけど、

一番単純なのはずらずら並べることです。
If Check1.Checked Then
Exit Sub
End If
・・・・・・・・
MessageBox.Show("Error")
下へ続けたいならExit Subの代わりにフラグを立てて
最後に聞けばよいでしょう。
Dim AnyChecked As Boolean = False
AnyChecked = AnyChecked Or Check1.Checked
AnyChecked = AnyChecked Or Check2.Checked
・・・・・・・・
If Not AnyChecked Then
MessageBox.Show("Error")
End If

面倒ですが、すべてのCheckedChangedイベントでフラグをOnOffするという手もあります。

次はControlsから探すパターン。※あまりお勧めはしません。
Dim MyControl As Control
For Each MyControl In Me.Controls
If TypeOf MyControl Is CheckBox Then
If CType(MyControl, CheckBox).Checked Then
Exit Sub
End If
End If
Next
MessageBox.Show("Error")

「コントロールの配列を作成する」
http://dobon.net/vb/dotnet/control/buttonarray.html
としてループで回すという手もあります。
お世話になります。

■No14146に返信(JTさんの記事)
チェックがついているかいないかの判定はどういった
タイミングで行うのですか?
Button 等をクリックした時?

まどかさんの Controls から探すパターン と殆ど同じですが、
Panel の中に CheckBox を配置すれば、こんな感じの方法もあるんではないでしょうか。

Private Sub Panel1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Panel1.Leave
  For Each ctrl As Control In Me.Panel1.Controls
    If TypeOf ctrl Is CheckBox Then
      If DirectCast(ctrl, CheckBox).Checked Then Exit Sub
    End If
  Next
  MessageBox.Show("Error")
End Sub
それにしても探したりするのは、実行時にしか解決できない問題があるのでお勧めできませんね。
フォーム全体となると、子コントロールを含む場合は再帰しなければいけません。
(なおこ(・∀・)さんの案ならば、Panel にすべてあると保証しなければなりません)

かといって、単純に並べて条件を書くのは億劫でしょう。
私なら最初からコントロールの配列を使うでしょうね。
つまり、まどかさんの最終案になるでしょうね。
  • 題名: Re[2]: 条件の書き方
  • 著者: JT
  • 日時: 2005/12/16 16:55:11
  • ID: 14250
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
お久しぶりです。。
すみません、苦悩の末なんとか解決できました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板