批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

[问题求助] PowerShell怎样给列表项添加双击和中键事件?

下面的代码能显示 可多选的列表框

存在两个问题:
1.不管用下面的哪种方法,窗体底部都有空白, 如何去除? 我想尽量使用第2种方法
$listBox.Size = '160,260'

$listBox.Dock = 'Fill'



2.我已经将窗体中的OK按钮删除了, 我想:
A.当选中了一个列表项时: 鼠标双击, 实现OK按钮的功能
B.当选中了多个列表项时: 按下鼠标中键, 实现OK按钮的功能


这样一搞, 感觉干净利索, 尤其是列表项很多时, 点OK按钮不太方便
  1. Add-Type -AssemblyName System.Windows.Forms
  2. $form = New-Object System.Windows.Forms.Form
  3. $form.Text = '双击查询'
  4. $Form.FormBorderStyle = "FixedToolWindow"
  5. $form.StartPosition = 'CenterScreen'
  6. $form.Font = New-Object System.Drawing.Font("微软雅黑", 10, [Drawing.FontStyle]::Bold)
  7. $form.ClientSize = '160, 260'
  8. $listBox = New-Object System.Windows.Forms.Listbox
  9. $listBox.Size = '160,260'
  10. $listBox.SelectionMode = 'MultiExtended'
  11. $listBox.DataSource = '张三', '李四', '王五', '赵六'
  12. $form.Controls.Add($listBox)
  13. $result = $form.ShowDialog()
  14. if ($result -eq [System.Windows.Forms.DialogResult]::OK)
  15. {
  16.         $selectedItems = $listBox.SelectedItems
  17. }
复制代码
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

  1. Add-Type -AssemblyName System.Windows.Forms
  2. [system.Windows.forms.form]$form = New-Object System.Windows.Forms.Form
  3. $form.Text = '双击查询'
  4. $Form.FormBorderStyle = "FixedToolWindow"
  5. $form.StartPosition = 'CenterScreen'
  6. $form.Font = New-Object System.Drawing.Font("微软雅黑", 10, [Drawing.FontStyle]::Bold)
  7. $form.ClientSize = '160, 260'
  8. $listBox = New-Object System.Windows.Forms.Listbox
  9. # $listBox.Size = '160,260'
  10. $listBox.Dock = 'Fill'
  11. $listBox.SelectionMode = 'MultiExtended'
  12. $listBox.DataSource = '张三', '李四', '王五', '赵六'
  13. $form.Controls.Add($listBox)
  14. $form.add_FormClosing( {
  15.     param($oSender, $oArgs)
  16.     $oArgs.Cancel = $listBox.SelectedItems.Count -eq 0
  17.     $Script:selectedItems = $listBox.SelectedItems
  18.   })
  19. $result = $form.ShowDialog()
  20. $Script:selectedItems
复制代码
必须选择至少一个对象才能退出窗口;
微信:flashercs
QQ:49908356

TOP

回复 2# flashercs


双击没有反应
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

  1. Add-Type -AssemblyName System.Windows.Forms
  2. $form = New-Object System.Windows.Forms.Form
  3. $form.Text = '双击查询'
  4. $Form.FormBorderStyle = "FixedToolWindow"
  5. $form.StartPosition = 'CenterScreen'
  6. $form.Font = New-Object System.Drawing.Font("微软雅黑", 10, [Drawing.FontStyle]::Bold)
  7. $form.ClientSize = '160, 260'
  8. $listBox = New-Object System.Windows.Forms.Listbox
  9. $listBox.Size = '160,260'
  10. $listBox.SelectionMode = 'MultiExtended'
  11. $listBox.DataSource = '张三', '李四', '王五', '赵六'
  12. $form.Controls.Add($listBox)
  13. $Script:selectedItems = $null
  14. $listBox.add_DoubleClick({
  15.     if($listBox.SelectedItems.Count -ne 1){ return }
  16.     $Script:selectedItems = $listBox.SelectedItems
  17.     $form.Close()
  18. })
  19. $listBox.add_MouseDown({
  20.     if($_.Button -ne 'Middle'){ return }
  21.     $Script:selectedItems = $listBox.SelectedItems
  22.     $form.Close()
  23. })
  24. $result = $form.ShowDialog()
  25. $Script:selectedItems
复制代码

TOP

回复 4# went

感谢大侠帮忙,没想到$_还能用在事件中!


列表框下边的空白无解吗?

本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

回复 5# 5i365


    listbox的高没必要和form相同,调大一点,260改成300

TOP

返回列表