none
Radio Button RRS feed

  • Frage

  • Hallo,

    ich habe vor einiger Zeit eine Funktion aus einem anderen Script übernommen. Über diese Funktion lese ich ein Verzeichnis aus und erhalten die gesuchten Datei zur Auswahl angezeigt. Einziger Schönheitsfehler ist, dass ich eine Mehrfachauswahl vornehmen kann. Ich möchte aber und eine Datei auswählen können. Kann mir da jemand einen Hinweis gehen?

    function Select-Item($path, $filter = "*", [switch]$recurse = $false, $displayMember = "Name")
    {
    	[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null
    	$dlg = New-Object System.Windows.Forms.Form
    	$dlg.Text = $path
    
    	$panel = New-Object System.Windows.Forms.FlowLayoutPanel
    	$panel.Height = 30
    	$panel.Dock = "Bottom"
    	$panel.FlowDirection = "RightToLeft"
    
    	$cancel = New-Object System.Windows.Forms.Button
    	$cancel.Text = "Cancel"
    	$cancel.DialogResult = "Cancel"
    
    	$ok = New-Object System.Windows.Forms.Button
    	$ok.Text = "OK"
    	$ok.DialogResult = "OK"
    
    	$panel.Controls.Add($cancel)
    	$panel.Controls.Add($ok)
    
    	$list = New-Object System.Windows.Forms.CheckedListBox
    	$list.Dock = "Fill"
    	$list.DisplayMember = $displayMember
    	$list.IntegralHeight = $false
    	$list.CheckOnClick = $true
    
    	$dlg.Controls.Add($list)
    	$dlg.Controls.Add($panel)
    
    	$items = Get-ChildItem $path -Filter $filter -Recurse:$recurse
        $list.Items.AddRange($items)
    	$list.Sorted = $true
    
        $result = $dlg.ShowDialog()
    	if ($result -eq "OK")
    		    {
    		
                return $list.CheckedItems
    	    
                }
    }

    Vielen Dank

    Norbert


    IT Berater

    Donnerstag, 23. Juni 2016 09:10

Antworten

  • Moin,

    um eine Datei auszuwählen kannst du auch eine einfach Listbox nehmen und dir somit die radio buttons sparen und aus "return $list.CheckedItems" wird "return $list.SelectedItem"

    function Select-Item
    {
         param
         (
             [Object]
             $path,
    
             [string]
             $filter = '*',
    
             [Object]
             $recurse = $false,
    
             [string]
             $displayMember = 'Name'
         )
    
    	[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') | Out-Null
    	$dlg = New-Object System.Windows.Forms.Form
    	$dlg.Text = $path
    
    	$panel = New-Object System.Windows.Forms.FlowLayoutPanel
    	$panel.Height = 30
    	$panel.Dock = 'Bottom'
    	$panel.FlowDirection = 'RightToLeft'
    
    	$cancel = New-Object System.Windows.Forms.Button
    	$cancel.Text = 'Cancel'
    	$cancel.DialogResult = 'Cancel'
    
    	$ok = New-Object System.Windows.Forms.Button
    	$ok.Text = 'OK'
    	$ok.DialogResult = 'OK'
    
    	$panel.Controls.Add($cancel)
    	$panel.Controls.Add($ok)
    
    	$list = New-Object System.Windows.Forms.ListBox
    	$list.Dock = 'Fill'
    	$list.DisplayMember = $displayMember
    	$list.IntegralHeight = $false
    
    	$dlg.Controls.Add($list)
    	$dlg.Controls.Add($panel)
    
    	$items = Get-ChildItem $path -Filter $filter -Recurse:$recurse
        $list.Items.AddRange($items)
    	$list.Sorted = $true
    
        $result = $dlg.ShowDialog()
    	if ($result -eq 'OK'){	
            return $list.SelectedItem  
        }
    }


    • Als Antwort markiert NBC2009 Donnerstag, 23. Juni 2016 09:45
    Donnerstag, 23. Juni 2016 09:33

Alle Antworten

  • Moin,

    um eine Datei auszuwählen kannst du auch eine einfach Listbox nehmen und dir somit die radio buttons sparen und aus "return $list.CheckedItems" wird "return $list.SelectedItem"

    function Select-Item
    {
         param
         (
             [Object]
             $path,
    
             [string]
             $filter = '*',
    
             [Object]
             $recurse = $false,
    
             [string]
             $displayMember = 'Name'
         )
    
    	[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') | Out-Null
    	$dlg = New-Object System.Windows.Forms.Form
    	$dlg.Text = $path
    
    	$panel = New-Object System.Windows.Forms.FlowLayoutPanel
    	$panel.Height = 30
    	$panel.Dock = 'Bottom'
    	$panel.FlowDirection = 'RightToLeft'
    
    	$cancel = New-Object System.Windows.Forms.Button
    	$cancel.Text = 'Cancel'
    	$cancel.DialogResult = 'Cancel'
    
    	$ok = New-Object System.Windows.Forms.Button
    	$ok.Text = 'OK'
    	$ok.DialogResult = 'OK'
    
    	$panel.Controls.Add($cancel)
    	$panel.Controls.Add($ok)
    
    	$list = New-Object System.Windows.Forms.ListBox
    	$list.Dock = 'Fill'
    	$list.DisplayMember = $displayMember
    	$list.IntegralHeight = $false
    
    	$dlg.Controls.Add($list)
    	$dlg.Controls.Add($panel)
    
    	$items = Get-ChildItem $path -Filter $filter -Recurse:$recurse
        $list.Items.AddRange($items)
    	$list.Sorted = $true
    
        $result = $dlg.ShowDialog()
    	if ($result -eq 'OK'){	
            return $list.SelectedItem  
        }
    }


    • Als Antwort markiert NBC2009 Donnerstag, 23. Juni 2016 09:45
    Donnerstag, 23. Juni 2016 09:33
  • Vielen Dank.

    IT Berater

    Donnerstag, 23. Juni 2016 09:45