
VB.NETに関する質問です。
画面の一覧(SPREAD等)にチェックボックスがあり、
全てのチェックボックスにチェックがついているかどうかを調べたいです。
「もし一つでもチェックがついていた場合は、チェック処理から即座に抜け、
もし全てのチェックがついていない場合は、エラーメッセージを出力する」
という動作を求めています。
例えば、
For intRowIndex As integer = 0 To MaxRowCount - 1
If CBool(Cells(intRowIndex, checkboxColumn).Value) Then
'' チェックがついている場合
Exit For
Else
If intRowIndex = MaxRowCount Then
'' エラーメッセージ出力
End If
End If
Next
という処理で求める動きは可能ですが、
もう少しスマートなロジックがないかと考えています。
どなたか教えて頂けませんでしょうか?
No.1ベストアンサー
- 回答日時:
MVC的な考えをきっちり入れているのであれば,単純にModelにチェックメソッドを用意するだけです。
Model側もList(Of T)などで管理しているでしょうから,Enumerable.Any拡張メソッドでチェックできます。
ViewとModelの分離をしていないような場合は,コントロール側が内部の要素情報をIEnuemrableで得られることが多いでしょうから,
それに対してAny拡張メソッドを適用するだけです。
仮コードは
Cells.Cast(Of Row)().Any(Function (r) CBool(r(column).Value))
というような感じでしょうか。
# 標準コントロールにSPREADなるものはなかったはず。
No.2
- 回答日時:
状況がよく分からないので、具体的なコードは載せれませんが
昔はやったビットテーブルの処理ロジックなどに置き換えられるなら、
簡単に出来ると思います。
スプレッドのチェック状態を保持しているビット配列の
ハッシュ値が0なら全てチェックがついていないと見なして
処理を終了等。
まぁスプレッドのチェック状態を保持したビット配列を用意する方がめんどくさいと思いますが。
ちなみにループによる処理自体は、意図が分かりやすいコードなので
第三者がメンテナンスを行う可能性がある場合は、そのコードはそれで十分だと思いますよ。
逆にコアなアルゴリズムを入れると、メンテナンスも難しくなりますし
意図がどんどん分かりにくくなっていく傾向があるので
業務系アプリ等で利用するなら、あまりお勧めしません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
tryの終了
-
ファイルの排他
-
Javaプログラムからポップアッ...
-
BLOB型の画像データを表示したい
-
C#で別スレッドの終了を知りたい
-
数値の定数を付ける時
-
マルチスレッドのデバッグ
-
交互にスレッド実行 (どうして...
-
重たい処理のタイムアウト強制終了
-
JSP、サーブレットの初期処理
-
doGetとdoPostの違い
-
Javaでのデバッグコード削除
-
ftp 同時複数接続の負荷テスト...
-
C#でバックグラウンド処理から...
-
MediaPlayerコントロールのイベ...
-
変数名の付け方
-
「タイプ初期化子が例外をスロ...
-
エクセルVBAで、条件に一致する...
-
フォームの存在をチェックする方法
-
JSPで<SELECT>の中にDBから持っ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ラジオボタンの選択判定
-
Javaプログラムからポップアッ...
-
[Java] while(true)の意味
-
Javaでのデバッグコード削除
-
tryの終了
-
doGetとdoPostの違い
-
数値の定数を付ける時
-
onBlurとonFocusの処理順序につ...
-
BLOB型の画像データを表示したい
-
1日の始まりを合図する
-
ラベルの表示までが異常に遅い...
-
C#で別スレッドの終了を知りたい
-
javaのプログラムが止まる
-
Tomcat高負荷時の設定について
-
表示待ち時間に「処理中...」の...
-
どうコーディングしたらよいの...
-
マルチスレッドのデバッグ
-
ExcelVBA で文字列の特定の文字...
-
スレッド1とスレッド2を交互に...
-
C#の処理をリアルタイムに表示...
おすすめ情報