2013-05-18 3 views
0

이 문제의 원인은 확실하지 않지만 Windows Forms를 UI로 사용하는 PowerShell 스크립트가 있습니다. PowerShell ISE 내부에서 개발할 때 모든 것이 현대적인 스타일 버튼으로 멋지게 보입니다. PowerShell에서 실행할 때 Windows Classic 스타일보기로 표시되고 New-Object System.Windows.Forms.SaveFileDialog을 호출하면 충돌이 발생합니다. 내 스크립트에 더 좋을뿐만 아니라 실제로는 ISE 외부에서 작동하도록 코드에 추가 할 수있는 수정 사항이 있습니까?winform이 ISE 외부의 클래식보기로 표시

편집 : 이것은 내 기능으로 SaveFileDialog입니다. 이것은 ISE 내부에서 작동하지만 PowerShell 자체에서 스크립트를 실행하면이 스크립트를 호출 할 때 충돌이 발생합니다.

function exportToCSV([System.Object[]] $expArray) { 
    $save = New-Object System.Windows.Forms.SaveFileDialog 
    $save.CreatePrompt = $False 
    $save.SupportMultiDottedExtensions = $True 
    $save.DefaultExt = "csv" 
    $save.Filter = "CSV (*.csv) | *.csv*" 
    $save.Title = "Export to CSV" 
    if ($save.ShowDialog() -eq "OK") { 
     $expArray | export-csv $save.FileName 
    } 
} 

답변

3

양식을 표시 한 다음 현대적인 스타일로 표시하기 전에 다음 명령을 스크립트에 포함하십시오.

[System.Windows.Forms.Application]::EnableVisualStyles() 

그러나 이것은 savefiledialog에 영향을 미치지 않아야합니다. ISE에서 작동하지만 일반 콘솔에서는 작동하지 않는다고 말하는 것이므로 더 많은 도움이 필요합니다. PS3.0 모든 일에

$save.ShowHelp = $true 

가 잘 작동하지만 PS2.0에 대화 상자가 표시되지 않습니다 : 당신의 SaveFileDialog에 대한

해결 방법은 추가됩니다. ShowHelp은이를 수정하지만 이전 스타일의 대화 상자도 제공합니다. 그러나 기능이 더 중요하다. :)

+0

저에게 도움이 된 고마워요! SaveFileDialog를 호출 할 때 사용하는 함수를 포함하도록 내 질문을 편집했습니다. – sud0

+0

수정 된 내용 –

+0

고맙습니다. 그것은 그것을 고쳤다! – sud0

관련 문제