vb6.0で開発をしてます。選択画面で画面あるいはチェックボックスを選択してその数をテキストボックスに入れます。次ページボタンを押したらそのデータを次ページで選択した画面あるいはチェックボックスの数と加えて総選択数を取ってほしいです。いまの状態では、1ページ目で選択して、次ページへいったらそのデータがクリアされます。デバックしてみたら次ページいくとき、チェックボックスの値チェックするところで、チェックボックスクリック処理にいってしまうのです。
If D_Check(i + 16 * (p_index - 1)) = 1 Then
Check1(j).Value = 1
Label4(i).BackColor = &HFF8080
ElseIf D_Check(i + 16 * (p_index - 1)) = 0 Then
Check1(j).Value = 0
Label4(i).BackColor = &HC0C0C0
End If
すいません。送ってしまいました。
上のコードは画面セットするときのチェック入れです。
これはcheck1_click処理です。
i = Check1(Index).Value
Select Case i
Case 1
LabelLeft = LabelLeft + 1
Case 0
If LabelLeft > 0 Then
LabelLeft = LabelLeft - 1 //こちらに処理が移る
End If
End Select
チェックボックスをクリックしてないのに処理が移るのは何が問題なんでしょう?
>チェックボックスをクリックしてないのに処理が移るのは何が問題なんでしょう?
チェックボックスの仕様です。
> チェックボックスをクリックしてないのに処理が移るのは何が問題なんでしょう?
VB6のヘルプには、以下のような記載があります。
http://www.microsoft.com/japan/developer/library/VB98/vbevtclick.htm
一部抜粋して引用します。
================================================
[Click イベント]
| アプリケーションに次のようなコードを記述することによって、
| Click イベントを発生させることもできます。
| ・コマンド ボタン コントロールの Value プロパティを True に設定します。
| ・オプション ボタン コントロールの Value プロパティを True に設定します。
| ・チェック ボックス コントロールの Value プロパティの設定値を変更します。
================================================
このため、
> Check1(j).Value = 1
などのコードによって、Valueプロパティが変更されると、
Clickイベントが連動して発生する事になります。
Valueの変更に伴って、Clickイベントが発生するという点を考慮して
プログラムを見直してみてください。
親切なアドバイスどうもありがどうございます。
フラグを設定して、コマンドボタンコントロールのValueプロパティを変更する際にはClickイベントのサブルーチン処理はしないようにしました。