アプリ版:「スタンプのみでお礼する」機能のリリースについて

大学生です。プログラミングの授業でVisualBasicを利用しているのですが、わからずに先に進めない状態なので、どなたか教えてください!
ListBox(強中弱) × 1
CheckBox × 12
TextBox(点数表示) × 1
があります。やりたいことは、『CheckBoxにチェックを入れたとき、ListBoxで選んだレベルに応じた点数をTextBoxに表示させたい』です。
例えば、ListBoxで強を、かつCheckBox(のとある項目)にチェックを入れたら、TextBoxに『5点』と表示させるようなプログラムです。強が何点で中が何点かと言うのは定義してありますので問題ないです。しかも、チェックをはずすと、それと同じ点数をマイナスにするようにもしたいんです。
どうすればよいのでしょうか?ちなみに現段階まで作ってあるのは以下の通りです。

Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
Dim point As Integer

If CheckBox1.Checked = True Then
Select Case ListBox1.SelectedIndex
Case 0
point = 10
If CheckBox1.Checked Then
goukei = goukei + point
Else
goukei = goukei - point
End If
TextBox1.Text = goukei
pre_goukei = goukei

Case 1
point = 6
If CheckBox1.Checked Then
goukei = goukei + point
Else
goukei = goukei - point
End If
TextBox1.Text = goukei
goukei = pre_goukei

Case 2
point = 3
If CheckBox1.Checked Then
goukei = goukei + point
Else
goukei = goukei - point
End If

Case 3
point = 0
If CheckBox1.Checked Then
goukei = goukei + point
Else
goukei = goukei - point
End If
End Select
Else
Select Case ListBox1.SelectedIndex
Case 0
point = 10
If CheckBox1.Checked Then
goukei = goukei + point
Else
goukei = goukei - point
End If
Case 1
point = 6
If CheckBox1.Checked Then
goukei = goukei + point
Else
goukei = goukei - point
End If
Case 2
point = 3
If CheckBox1.Checked Then
goukei = goukei + point
Else
goukei = goukei - point
End If
Case 3
point = 0
If CheckBox1.Checked Then
goukei = goukei + point
Else
goukei = goukei - point
End If
End Select
End If
TextBox1.Text = goukei
End Sub

加算はできるのですが、減算をしてくれない状態です。ちなみに、case3から下はまだ手付けずです。他にもっと効率の良いやり方があるのかもしれませんが、IFとCASEを利用して作ると言うカテゴリにいるので、その点も踏まえて、これでわかる方がいましたら、よろしくお願いします。

A 回答 (3件)

どうもです。


まずはデバックして見て、減算の時にそこの式に行っているか確認しましょう。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。確認してみます。

お礼日時:2007/11/26 16:32

> 加算はできるのですが、減算をしてくれない状態です。


> IFとCASEを利用して作ると言うカテゴリにいるので

「減算をしなければならない」のでしょうか?

良くやるのは、
『「現在の状態を元に、0から計算する」プログラム(関数)を1つ作って、各イベントから呼び出す』
ですけど・・・
#そうすれば、「加算だけ」で計算できますけど・・・

後、提示されたコードで気になった点。
・goukeiとかpre_goukeiは、どういう用途で使っている?
・「If CheckBox1.Checked = True Then」の中に
「If CheckBox1.Checked Then」を書いても意味無いですよ。
(Trueの時にしか動かない場所で、同じチェックをしても結果は変わらないです)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
goukeiやpre_goukeiは、後に集計させるのに利用するため先に作ってあるだけで、今回の件では関係ありませんでした。すみません・・・・

お礼日時:2007/11/26 16:34

設定とコードの食い違いをちゃんと検証しましょう


ComboBoxに設定される項目が 強中弱 ならSelectedIndexは『-1,0,1,2』の4種類ですよ『3』になることはないと思います
選択されていない場合が -1です

このイベントで処理するなら
  select case ComboBox1.SelectedIndex
  case 0
    point = 10
  case 1
    point = 6
  case 2
    point = 3
  case else
    MsgBox "コンボボックスの選択が異常です"
    Exit Sub
  end select
  if CheckBox1.Checked = false then
    ' チェックされていない場合は減算
    point = -point
  end if
  goukei = TextBox1.Text
  goukei = goukei + point
  textbox1.text = goukei

といった具合で良いかと思いますが ・・・
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。プログラムを記載していただけてとても助かります!!
早速やって見たいと思います。

お礼日時:2007/11/26 16:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!