2016-07-19 13 views
0

私は次のようなコードを書いています。ユーザが最初にifをクリックしたときに、次にelseを2回目にしたときです。それ以外は、インクリメントしていないことを除いて。VBで整数がインクリメントしない

私は

数を試してみました=カウント+ 1

回数= 1

数+ = 1つの

私のコードは、あなたが別のを持っている

'new button calls second survey page and sets mode to data 
    Private Sub btnTurn_Click(sender As System.Object, e As System.EventArgs) Handles btnTurn.Click 
     Dim count As Integer 
     If count = 0 Then 
      frmSurvey2.szCaller = "frmSurvey" 
      frmSurvey2.szMode = "data" 
      frmSurvey2.Show() 
      count += 1 
     Else 
      frmSurvey2.szCaller = "frmSurvey" 
      frmSurvey2.szMode = "print" 
      frmSurvey2.Show() 
     End If 
    End Sub 
+0

脇;おそらく1になるカウンターの代わりに 'ブール'を使うべきですし、ifとelseの間の共通コード(重複を避けるために)は 'If'ブロックの外になければなりません。 – Sehnsucht

答えて

2

変数のレキシカルスコープを維持する場合は、vb.netのStaticを使用します。

Private Sub btnTurn_Click(sender As System.Object, e As System.EventArgs) Handles btnTurn.Click 
    Static count As Integer = 0 
    If count = 0 Then 
     ' do whatever 
     count += 1 
    Else 
     ' do whatever else 
    End If 
End Sub 

はターンでは、あなたが最初のものと衝突しない別のハンドラ内の別のcountを持つことができます。

Private Sub btnOther_Click(sender As System.Object, e As System.EventArgs) Handles btnOther.Click 
    Static count As Integer = 0 
    If count = 0 Then 
     ' do whatever 
     count += 1 
    Else 
     ' do whatever else 
    End If 
End Sub 
4

を下回っています関数を呼び出すたびに変数に変換されます。
したがって、常にゼロです。

あなたのクラスで宣言する必要があります。

+0

どうしましたか?私はそれを忘れる。ありがとうございます –

-1

他にも述べたように、ボタンクリックプロシージャが呼び出されるたびに、カウントは0にリセットされます(コメントの2行目のコード)。 変数を薄暗くすると、自動的に変数が0またはNothingに設定されます。

これを解決するには、ボタンクリックプロシージャの外でカウントをグローバル変数として宣言してみてください。

編集:ByrefとByvalはここでは使用できません。

それを指摘してくれてありがとうVerdolino。

私の回答が役に立ったら嬉しいです!

+0

このボタンクリックイベントハンドラ 'Private Sub btnTurn_Click(System.Object、System.EventArgsとして送信者)ハンドルbtnTurn.Click'、ByRef/ByValは適用されません。 SLaksはクラスレベルの変数宣言を行った – djv

+0

ああ、私は完全に忘れて、その@ヴェルドリーノありがとう – NightHowler

関連する問題