You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell表单中实现按钮点击次数的统计追踪

PowerShell 表单按钮点击统计实现方案

实现思路

  • 用哈希表存储所有按钮的累计点击数据,键为按钮唯一标识,值为点击次数
  • 所有按钮的点击事件中新增统计逻辑:触发继电器操作前先更新对应按钮的计数
  • 可选持久化存储到本地文件,表单重启后仍可保留历史统计数据

完整示例代码

# 加载WinForms依赖
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

# 初始化统计数据,支持本地持久化
$statFile = Join-Path $PSScriptRoot "relay_btn_stats.json"
$btnClickStats = @{}
# 启动时读取历史统计数据
if (Test-Path $statFile -PathType Leaf) {
    $btnClickStats = Get-Content $statFile -Raw | ConvertFrom-Json -AsHashtable
}

# 创建主表单
$mainForm = New-Object System.Windows.Forms.Form
$mainForm.Text = "继电器控制工具"
$mainForm.Size = New-Object System.Drawing.Size(300,250)

# 示例按钮1:继电器1接通
$btnRelay1On = New-Object System.Windows.Forms.Button
$btnRelay1On.Name = "Relay1_On"
$btnRelay1On.Text = "继电器1 接通"
$btnRelay1On.Location = New-Object System.Drawing.Point(30,30)
$btnRelay1On.Size = New-Object System.Drawing.Size(200,40)
$btnRelay1On.Add_Click({
    # 更新点击统计
    $btnClickStats[$this.Name] = $btnClickStats.ContainsKey($this.Name) ? ($btnClickStats[$this.Name] + 1) : 1
    # 同步保存到本地文件
    $btnClickStats | ConvertTo-Json | Set-Content $statFile -Encoding UTF8
    # 下方替换为你的实际继电器接通逻辑
    [System.Windows.Forms.MessageBox]::Show("继电器1已接通`n当前按钮累计点击:$($btnClickStats[$this.Name])次")
})
$mainForm.Controls.Add($btnRelay1On)

# 示例按钮2:继电器1断开
$btnRelay1Off = New-Object System.Windows.Forms.Button
$btnRelay1Off.Name = "Relay1_Off"
$btnRelay1Off.Text = "继电器1 断开"
$btnRelay1Off.Location = New-Object System.Drawing.Point(30,90)
$btnRelay1Off.Size = New-Object System.Drawing.Size(200,40)
$btnRelay1Off.Add_Click({
    # 更新点击统计
    $btnClickStats[$this.Name] = $btnClickStats.ContainsKey($this.Name) ? ($btnClickStats[$this.Name] + 1) : 1
    # 同步保存到本地文件
    $btnClickStats | ConvertTo-Json | Set-Content $statFile -Encoding UTF8
    # 下方替换为你的实际继电器断开逻辑
    [System.Windows.Forms.MessageBox]::Show("继电器1已断开`n当前按钮累计点击:$($btnClickStats[$this.Name])次")
})
$mainForm.Controls.Add($btnRelay1Off)

# 统计查看按钮
$btnViewStats = New-Object System.Windows.Forms.Button
$btnViewStats.Text = "查看所有按钮统计"
$btnViewStats.Location = New-Object System.Drawing.Point(30,150)
$btnViewStats.Size = New-Object System.Drawing.Size(200,40)
$btnViewStats.Add_Click({
    $statText = "按钮点击统计:`n"
    foreach($btnName in $btnClickStats.Keys) {
        $statText += "`n$btnName : $($btnClickStats[$btnName]) 次"
    }
    [System.Windows.Forms.MessageBox]::Show($statText)
})
$mainForm.Controls.Add($btnViewStats)

# 显示表单
$mainForm.ShowDialog() | Out-Null

可选调整说明

  • 你可以将按钮的Name属性改为更易读的中文名称,统计时会直接显示对应名称
  • 如果不需要持久化存储,删除读写relay_btn_stats.json的相关代码即可
  • 若需要导出统计报表,可以将哈希表转换为CSV格式保存,代码为$btnClickStats.GetEnumerator() | Export-Csv "统计报表.csv" -Encoding UTF8 -NoTypeInformation

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:15:03