找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 16563|回复: 5

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

[复制链接]
发表于 2022-9-21 19:23:06 | 显示全部楼层 |阅读模式
下面的代码能显示 可多选的列表框

存在两个问题:
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. }
复制代码
发表于 2022-9-23 16:12:29 | 显示全部楼层
  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
复制代码
必须选择至少一个对象才能退出窗口;
 楼主| 发表于 2022-9-23 21:26:00 | 显示全部楼层
回复 2# flashercs


双击没有反应
发表于 2022-9-23 23:27:33 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2022-9-24 05:40:41 | 显示全部楼层
回复 4# went

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


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

发表于 2022-9-24 08:52:19 | 显示全部楼层
回复 5# 5i365


    listbox的高没必要和form相同,调大一点,260改成300
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 23:45 , Processed in 0.010414 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表