一键二用

One button with 2 actions

我确实尝试制作 1 个按钮,执行 2 个动作:一个在第一次按下(单击),另一个在第二次按下(单击),然后重复。然而,none 我的方法对我有用,所以我制作了第二个按钮来进行第二个动作,但我真的很想只有一个。这是一个小例子,应该可以帮助你帮助我:)。

#This creates the all button and sets the event
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(60,20)
$OKButton.Size = New-Object System.Drawing.Size(30,20)
$OKButton.Text = "all"
$OKButton.Add_Click({
  $ua2Checkbox.Checked=$true;
  $nvsCheckbox.Checked=$true;
  $krsCheckbox.Checked=$true;
  $uaCheckbox.Checked=$true;
  $hbrCheckbox.Checked=$true;
})
$objForm.Controls.Add($OKButton)
$objForm.Add_Shown({$objForm.Activate()})

#This creates the none button and sets the event
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(100,20)
$OKButton.Size = New-Object System.Drawing.Size(40,20)
$OKButton.Text = "None"
$OKButton.Add_Click({
  $ua2Checkbox.Checked=$false;
  $nvsCheckbox.Checked=$false;
  $krsCheckbox.Checked=$false;
  $uaCheckbox.Checked=$false;
  $hbrCheckbox.Checked=$false;
})
$objForm.Controls.Add($OKButton)
$objForm.Add_Shown({$objForm.Activate()})

$actionAll = {
  #$ua2Checkbox.Checked=$true;$nvsCheckbox.Checked=$true;$krsCheckbox.Checked=$true;$uaCheckbox.Checked=$true;$hbrCheckbox.Checked=$true;
#$OKButton.Add_Click($ua2Checkbox.Checked=$true;$nvsCheckbox.Checked=$true;$krsCheckbox.Checked=$true;$uaCheckbox.Checked=$true;$hbrCheckbox.Checked=$true;)
#$OKButton.Remove_click({$ua2Checkbox.Checked=$false;$nvsCheckbox.Checked=$false;$krsCheckbox.Checked=$false;$uaCheckbox.Checked=$false;$hbrCheckbox.Checked=$false;})
}
$actionnone = {
 #$ua2Checkbox.Checked=$false;$nvsCheckbox.Checked=$false;$krsCheckbox.Checked=$false;$uaCheckbox.Checked=$false;$hbrCheckbox.Checked=$false;
#$OKButton.Add_Click($ua2Checkbox.Checked=$false;$nvsCheckbox.Checked=$false;$krsCheckbox.Checked=$false;$uaCheckbox.Checked=$false;$hbrCheckbox.Checked=$false;)
#$OKButton.Remove_click({$ua2Checkbox.Checked=$false;$nvsCheckbox.Checked=$false;$krsCheckbox.Checked=$false;$uaCheckbox.Checked=$false;$hbrCheckbox.Checked=$false;})
}


$OKButton.Location = New-Object System.Drawing.Size(60,20)
$OKButton.Size = New-Object System.Drawing.Size(30,20)
$OKButton.Text = "all"
$OKButton.Add_Click({invoke-expression "$actionAll"})
$OKButton.Remove_click({invoke-expression "$actionnone"})
#$OKButton.MouseDoubleClick({$ua2Checkbox.Checked=$false;$nvsCheckbox.Checked=$false;$krsCheckbox.Checked=$false;$uaCheckbox.Checked=$false;$hbrCheckbox.Checked=$false;})
$objForm.Controls.Add($OKButton)
$objForm.Add_Shown({$objForm.Activate()})

如果您想在每次单击按钮时切换按钮的动作,则需要在每个动作中用另一个动作替换当前动作:

$actionAll = {
  # other operations here
  $OKButton.Text = 'None'
  $OKButton.Remove_Click($actionAll)
  $OKButton.Add_Click($actionNone)
}

$actionNone = {
  # other operations here
  $OKButton.Text = 'All'
  $OKButton.Remove_Click($actionNone)
  $OKButton.Add_Click($actionAll)
}

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Text = 'All'
$OKButton.Add_Click($actionAll)
$objForm.Controls.Add($OKButton)