【问题标题】:PowerShell Drag & Drop FailsPowerShell 拖放失败
【发布时间】:2011-07-08 12:27:29
【问题描述】:

在下面的 ps1 脚本中拖放文件时遇到问题。它不适用于 PowerGui、PowerShell ISE 或 as

$installDir = Split-Path -Path $myinvocation.mycommand.path
& $env:SystemRoot\system32\WindowsPowerShell\v1.0\powershell.exe -sta (Join-Path $installDir "TestDrop.ps1") 

任何帮助将不胜感激。

## TestDrop.ps1 for testing drag & drop

function DragNDrop {
#region Import the Assemblies
[reflection.assembly]::Load("System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089") | Out-Null
[reflection.assembly]::Load("System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a") | Out-Null
[reflection.assembly]::Load("mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089") | Out-Null
[reflection.assembly]::Load("System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089") | Out-Null

#endregion

[System.Windows.Forms.Application]::EnableVisualStyles()
$objForm = New-Object System.Windows.Forms.Form 
$objTextBox = New-Object System.Windows.Forms.TextBox 

$handler_DragEnter={    
    write-host "$Event Enter" 
    $Event.Effect = "Copy" # not sure about this ...
}

$objForm.Text = "Test Drag & Drop"
$objForm.Size = New-Object System.Drawing.Size(200,200) 
$objForm.StartPosition = "CenterScreen"
$objForm.KeyPreview = $True
$objForm.SizeGripStyle = 'Hide'
$objForm.FormBorderStyle = 'Fixed3D'

$objTextBox.AllowDrop = $true
$objTextBox.Location = New-Object System.Drawing.Size(10,25) 
$objTextBox.Size = New-Object System.Drawing.Size(120,120)  
$objTextBox.Multiline = $true
$objTextBox.TabIndex = 1
$objTextBox.Text = "Try to Drag & Drop File Here..."
$objTextBox.Add_DragEnter({ write-host "Event Enter" })
$objTextBox.Add_DragDrop({ write-host "Event Drop" })
$objForm.Controls.Add($objTextBox)
$objForm.Topmost = $True

return $objForm.ShowDialog()

} #End Function

DragNDrop | Out-Null 

【问题讨论】:

  • “它不起作用” - 以什么方式?
  • write-host 命令不执行/输出
  • 这是整个脚本吗?看起来缺少很多东西。
  • 具体来说,您引用了一些变量但未设置为任何变量,例如 $Handler_DragEnter$Event
  • 这是 The Full Monty - 最后一行是 DragNDrop |外空

标签: powershell drag-and-drop


【解决方案1】:

你应该像这样启用 droppiong

$objTextBox.Add_DragEnter({ 
  write-host "Event Enter" 
  $_.Effect = 'Copy'
})

【讨论】:

  • 知道了 /spasibo!/ if ($_.Data.GetDataPresent([Windows.Forms.DataFormats]::FileDrop, $false)) { $_.Effect = "Copy" }跨度>
猜你喜欢
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
相关资源
最近更新 更多