2017-01-04 7 views
1

私のスクリプトの1つでは、特定のイベントが発生した場合に徐々に増加するカウンタを使用しています。私はそうするために、次の構文を使用します。インクリメントされたカウンタを正しくリセットする方法はありますか?

if ($IndexPositionTrue) { 
    $CorrectTextbox.Text = $script:countercorrect++ 
} 

は、今私はあなたがこの私のセットアップのために戻って0にclick_handlerでボタンを$countercorrect値をリセットすることが可能なボタンを実装しようとしています:

$reset = New-Object System.Windows.Forms.Button 
$reset.Add_Click($handler_reset_click) 
$form1.Controls.Add($Reset) 

$handler_reset_click = { 
    Reset 
} 

function Reset { 
    Clear-Variable countercorrect 
} 

たとえば、$countercorrectの値が5に変更され、Resetの機能が使用されているとします。値は0にリセットされますが、1を表示する代わりに次の増分の後に6が表示されます。

誤った値を「リセット」していますか?

答えて

3

私はあなたがこのようなリセット機能を変更することができ、これはスコープの問題だと思う:

function Reset { 
    $script:countercorrect = 0 
} 
+0

はどうもありがとうございまし機能を使用してください。私は - スコープについても考えなかった。 –

+1

変数を消去する代わりに( "value" '$ null'を持っています)、おそらく' $ script:countercorrect = 0'にゼロにリセットするべきです。 –

+0

@AnsgarWiechersはい、コードを変更しました –

2

あなたのif文で$Script:countercorrectを指すが、あなたの機能reset$countercorrectを参照してください。もしあなたがここで間違った範囲を使用していると思うなら。

function Reset { 
Clear-Variable countercorrect -Scope Script 
} 
+0

ありがとうございました!これはまさにここの問題でした。 :) –

関連する問題