【问题标题】:How to correctly reset an incremented counter?如何正确重置递增的计数器?
【发布时间】:2017-05-18 16:06:26
【问题描述】:

在我的一个脚本中,我使用了一个计数器,如果发生特定事件,我会逐渐递增该计数器。我使用以下语法来做到这一点:

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

现在我正在尝试实现一个按钮,您可以使用该按钮将 $countercorrect 值重置为 0。为此,我设置了一个带有 click_handler 的按钮:

$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,但在下一个增量后显示 6 而不是显示 1。

我的语法不正确还是我“重置”了错误的值?

【问题讨论】:

    标签: winforms powershell counter reset


    【解决方案1】:

    我认为这是一个范围问题,你能像这样修改重置功能吗:

    function Reset {
        $script:countercorrect = 0
    }
    

    【讨论】:

    • 非常感谢。我什至没有考虑 -Scope。
    • 您应该将其重置为零:$script:countercorrect = 0。
    【解决方案2】:

    您在 If 语句中引用 $Script:countercorrect,但在函数 reset 中引用 $countercorrect。如果认为您在这里使用了错误的范围。

    使用函数

    function Reset {
    Clear-Variable countercorrect -Scope Script
    }
    

    【讨论】:

    • 感谢您的帮助!这正是这里的问题。 :)
    猜你喜欢
    • 1970-01-01
    • 2016-02-03
    • 2010-11-13
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多