0

基本的に、ユーザーが「常に」や「まったくない」などの評価を選択する調査ドキュメントが必要です。ラジオボタンを押して評価を選択します。評価は重み付けされ、GPA のように合計スコアに平均化されます。つまり、常に 3 の価値があり、ある程度は 2 の価値があり、各質問を追加してから平均化する必要があります。以下は、1 つの質問に対する私のコードのセクションです。

ボタンが選択された後、最後に値を取得し、すべての質問でそれらを平均するにはどうすればよいですか?

Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton1.CheckedChanged

    If RadioButton1.Checked = True Then

        RadioButton3.Checked = False
        RadioButton2.Checked = False
        RadioButton4.Checked = False
        RadioButton5.Checked = False
        num1 = 2
    End If

End Sub

Private Sub RadioButton2_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton2.CheckedChanged
    If RadioButton2.Checked = True Then

        RadioButton3.Checked = False
        RadioButton1.Checked = False
        RadioButton4.Checked = False
        RadioButton5.Checked = False
        num1 = 3
    End If
End Sub

Private Sub RadioButton3_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton3.CheckedChanged
    If RadioButton3.Checked = True Then

        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton4.Checked = False
        RadioButton5.Checked = False
        num1 = 1
    End If
End Sub

Private Sub RadioButton4_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton4.CheckedChanged
    If RadioButton4.Checked = True Then

        RadioButton3.Checked = False
        RadioButton2.Checked = False
        RadioButton1.Checked = False
        RadioButton5.Checked = False
        num1 = 0
    End If
End Sub

Private Sub RadioButton5_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton5.CheckedChanged


    If RadioButton5.Checked = True Then

        RadioButton3.Checked = False
        RadioButton2.Checked = False
        RadioButton4.Checked = False
        RadioButton1.Checked = False
        num1 = 0
    End If
End Sub
4

2 に答える 2

1

まず、すべての RadioButton イベント ハンドラーを 1 つのハンドラーに統合できます。さらに、これは自動的に行われるため、グループ内の他の RadioButton を「チェック解除」する必要はありません。最後に、評価を計算してフォームを更新する別のメソッドを作成し、ハンドラーの下部でそのメソッドを呼び出します。

それは次のようになります。

Private num1 As Integer

Private Sub set1_CheckedChanged(sender As Object, e As EventArgs) Handles _
        RadioButton1.CheckedChanged, RadioButton2.CheckedChanged, RadioButton3.CheckedChanged, _
        RadioButton4.CheckedChanged, RadioButton5.CheckedChanged

    If RadioButton1.Checked Then
        num1 = 2
    ElseIf RadioButton2.Checked Then
        num1 = 3
    ElseIf RadioButton3.Checked Then
        num1 = 1
    ElseIf RadioButton4.Checked Then
        num1 = 0
    ElseIf RadioButton5.Checked Then
        num1 = 0
    End If

    UpdateRating()
End Sub

Private Sub UpdateRating()
    ' ... compute the rating using "num1", "num2", "num3", etc ...
    ' ... then update the GUI with the new value ...
End Sub

5 つの RadioButton すべてが「Handles」キーワードの後に​​リストされているため、すべてが同じハンドラを起動することに注意してください。RadioButtons の各グループに対して同様のことを行うことができます...RadioButtons の各セットがGroupBoxや Panel のような独自のコンテナーにあることを確認してください。RadioButton は、独自のコンテナ内の他のすべての RadioButton と相互に排他的です。

于 2013-06-13T00:49:44.377 に答える
0

あなたのケースについてはよくわかりません..しかし、これを試すことができます

すべての結果をカウントする変数を宣言します..

Dim num1 as Integer 
Dim num2 as Integer '--> for other group radiobuttons
Dim num3 as Integer '--> for other group radiobuttons

Dim nTotal as Integer
Dim nAvg as Integer

チェック変更でこれを行います

Private Sub RadioButton_CheckedChanged(..) Handles RadioButton1_CheckedChanged, RadioButton2_CheckedChanged,  .....

  'codes
  countit()

End Sub

Sub CountIt()
   nTotal = num1 + num2 + num3
   nAvg = (num1 + num2 + num3) / 3
End Sub
于 2013-06-13T00:44:49.180 に答える