一个按钮有2个动作

时间:2015-06-19 11:36:41

标签: winforms powershell button click action

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

#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()})

1 个答案:

答案 0 :(得分:0)

如果您想在每次单击按钮时切换按钮的操作,则需要将当前操作替换为每个操作中的其他操作:

$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)