none
RadioButton Auswahl abfragen RRS feed

  • Frage

  • Hallo,

    ich habe ein PS im INet gefunden und für meinen Bedarf verändert. Jetzt habe ich aber noch das Problem, dass ich die getroffene Auswahl des RadioButtons nicht abfragen kann. Wer kann mir da helfen?

    $computername = "Client007"
    $Quelle = "\\SRV004\d$\Tools\Powershell_Scriptsammlung"
    $Files = gci -name -Path $Quelle *.ps1 -Exclude Menue.*| foreach {$_ -replace ".ps1", ""}
    #region Import the Assemblies
    [reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
    [reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
    #endregion
    ##############################################################
    # Funktion Deklarieren! (wird nicht ausgeführt!) 
    Function Create-MenuRadioButtons {
    	param (
    		# Parameter der die Form darstellt in der die RadioButtons erzeugt werden
    		# Die Form wird als Parameter übergeben!
    		[Parameter(Mandatory=$True)]
    		[ValidateNotNull()]
    		[System.Windows.Forms.Form]$Form
    	)
     
       foreach ($d in $Files)
       {
             $k = $k += 1
             $RadioButton = New-Object System.Windows.Forms.RadioButton
             $RadioButton.DataBindings.DefaultDataSourceUpdateMode = 0
             $System_Drawing_Point = New-Object System.Drawing.Point
             $System_Drawing_Point.X = 30
             $System_Drawing_Point.Y = 33 * $k
             $RadioButton.Location = $System_Drawing_Point
             $RadioButton.Name = "radioButton" + $k
             $System_Drawing_Size = New-Object System.Drawing.Size
             $System_Drawing_Size.Height = 50
             $System_Drawing_Size.Width = 200
             $RadioButton.Size = $System_Drawing_Size
             $RadioButton.TabIndex = 3
             $RadioButton.TabStop = $true
             $RadioButton.Text = -join ($k,". ",$d)
             $RadioButton.UseVisualStyleBackColor = $True
             $Form.Controls.Add($RadioButton)
          
       }
    }
    ##############################################################
    #region Generated Form Objects
    $form1 = New-Object System.Windows.Forms.Form
    $button3 = New-Object System.Windows.Forms.Button
    $button2 = New-Object System.Windows.Forms.Button
    $button1 = New-Object System.Windows.Forms.Button
    #endregion Generated Form Objects
    $button1_OnClick= 
        {
        Write-Host "D=" $d
        Write-Host "K=" $k
        #write-host "powershell.exe " "$Quelle\$($Files[$d]).ps1 $computername"  
        #Start-Process "powershell.exe " "$Quelle\$($Files[$d]).ps1 $computername"
        }
    $button3_OnClick= 
        {
        $form1.close()
        }
    $button2_OnClick= 
        {
        &notepad
    	# Funktion Aufrufen Radiobuttons erzeugen in der Form
    	#Create-MenuRadioButtons $form1
        }
    #----------------------------------------------
    #region Generated Form Code
    $System_Drawing_Size = New-Object System.Drawing.Size
    $System_Drawing_Size.Height = 500
    $System_Drawing_Size.Width = 500
    $form1.ClientSize = $System_Drawing_Size
    $form1.DataBindings.DefaultDataSourceUpdateMode = 0
    $form1.Name = "form1"
    $form1.Text = "Client Support"
    $form1.StartPosition = 1
    $form1.FormBorderStyle = 1
    $System_Drawing_Point = New-Object System.Drawing.Point
    $System_Drawing_Point.X = 280
    $System_Drawing_Point.Y = 160
    $button3.Location = $System_Drawing_Point
    $button3.DataBindings.DefaultDataSourceUpdateMode = 0
    $button3.Name = "button3"
    $System_Drawing_Size = New-Object System.Drawing.Size
    $System_Drawing_Size.Height = 35
    $System_Drawing_Size.Width = 140
    $button3.Size = $System_Drawing_Size
    $button3.TabIndex = 2
    $button3.Text = "Beenden"
    $button3.UseVisualStyleBackColor = $True
    $button3.add_Click($button3_OnClick)
    $form1.Controls.Add($button3)
    $System_Drawing_Point = New-Object System.Drawing.Point
    $System_Drawing_Point.X = 280
    $System_Drawing_Point.Y = 110
    $button2.Location = $System_Drawing_Point
    $button2.DataBindings.DefaultDataSourceUpdateMode = 0
    $button2.Name = "button2"
    $System_Drawing_Size = New-Object System.Drawing.Size
    $System_Drawing_Size.Height = 35
    $System_Drawing_Size.Width = 140
    $button2.Size = $System_Drawing_Size
    $button2.TabIndex = 1
    $button2.Text = "Notepad"
    $button2.UseVisualStyleBackColor = $True
    $button2.add_Click($button2_OnClick)
    $form1.Controls.Add($button2)
    $System_Drawing_Point = New-Object System.Drawing.Point
    $System_Drawing_Point.X = 280
    $System_Drawing_Point.Y = 60
    $button1.Location = $System_Drawing_Point
    $button1.DataBindings.DefaultDataSourceUpdateMode = 0
    $button1.Name = "button1"
    $System_Drawing_Size = New-Object System.Drawing.Size
    $System_Drawing_Size.Height =35
    $System_Drawing_Size.Width = 140
    $button1.Size = $System_Drawing_Size
    $button1.TabIndex = 0
    $button1.Text = "Run Script"
    $button1.UseVisualStyleBackColor = $True
    $button1.add_Click($button1_OnClick)
    $form1.Controls.Add($button1)
    # Funktion Aufrufen Radiobuttons erzeugen in der Form
    Create-MenuRadioButtons $form1
    #endregion Generated Form Code
    #Show the Form
    $form1.ShowDialog()| Out-Null


    IT Berater


    • Bearbeitet NBC2009 Freitag, 15. November 2013 12:05
    Freitag, 15. November 2013 12:00

Antworten


  • $button2_OnClick= 
        {
        	# jedes Control in der Form durchlaufen
    		ForEach($Control in $form1.Controls){
    			# wenn das Control ein RadioButton ist
    			If($Control -is [System.Windows.Forms.RadioButton]) {
    				# wenn der RadioButton Markiert ist
    				If($Control.Checked -eq $True) {
    				# Text des Radiobuttons auslesen (und verarbeiten)
    					Write-Host ($Control.Text.Substring($Control.Text.IndexOf('.') + 1 ).Trim() + (".ps1"))
    				}
    			}	
    		}
        }

    Du wirs mit deinem Script aber nicht dein Ziel (einer Dateiauswahl) erreichen, weil du am Anfang des Scriptes aus den Datei Objekten "Dumme" Strings machst!
    Dir gehen dadurch alle Informationen der Dateien verloren!
    z.B. Weist du den Pfad zu den Dateien dadurch nicht mehr!

    Objekte sollten immer Objekte bleiben!


    Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    Mein deutscher PowerShell Blog
    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)

    • Bearbeitet Peter Kriegel Freitag, 15. November 2013 12:49
    • Als Antwort markiert NBC2009 Dienstag, 19. November 2013 10:33
    Freitag, 15. November 2013 12:42

Alle Antworten


  • $button2_OnClick= 
        {
        	# jedes Control in der Form durchlaufen
    		ForEach($Control in $form1.Controls){
    			# wenn das Control ein RadioButton ist
    			If($Control -is [System.Windows.Forms.RadioButton]) {
    				# wenn der RadioButton Markiert ist
    				If($Control.Checked -eq $True) {
    				# Text des Radiobuttons auslesen (und verarbeiten)
    					Write-Host ($Control.Text.Substring($Control.Text.IndexOf('.') + 1 ).Trim() + (".ps1"))
    				}
    			}	
    		}
        }

    Du wirs mit deinem Script aber nicht dein Ziel (einer Dateiauswahl) erreichen, weil du am Anfang des Scriptes aus den Datei Objekten "Dumme" Strings machst!
    Dir gehen dadurch alle Informationen der Dateien verloren!
    z.B. Weist du den Pfad zu den Dateien dadurch nicht mehr!

    Objekte sollten immer Objekte bleiben!


    Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    Mein deutscher PowerShell Blog
    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)

    • Bearbeitet Peter Kriegel Freitag, 15. November 2013 12:49
    • Als Antwort markiert NBC2009 Dienstag, 19. November 2013 10:33
    Freitag, 15. November 2013 12:42
  • PowerShell erzeugt und verarbeitet Objekte und keinen Text!

    Objekte sollten immer Objekte bleiben!

    Besser ist mit Objekten zu Arbeiten :

    $computername = "Client007"
    $Quelle = "\\SRV004\d$\Tools\Powershell_Scriptsammlung"
    
    # >>>>>>>>> begin Geändert
    # in 4Files werden die Dateien als Objekte abgelegt, NICHT ALS TEXT!
    $Files = Get-ChildItem -Path $Quelle *.ps1 -Exclude Menue.*
    # <<<<<<<<<<< end geändert 
    
    #region Import the Assemblies
    [reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
    [reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
    #endregion
    ##############################################################
    # Funktion Deklarieren! (wird nicht ausgeführt!) 
    Function Create-MenuRadioButtons {
    	param (
    		# Parameter der die Form darstellt in der die RadioButtons erzeugt werden
    		# Die Form wird als Parameter übergeben!
    		[Parameter(Mandatory=$True)]
    		[ValidateNotNull()]
    		[System.Windows.Forms.Form]$Form
    	)
     
       foreach ($File in $Files) {
             $k = $k += 1
             $RadioButton = New-Object System.Windows.Forms.RadioButton
             $RadioButton.DataBindings.DefaultDataSourceUpdateMode = 0
             $System_Drawing_Point = New-Object System.Drawing.Point
             $System_Drawing_Point.X = 30
             $System_Drawing_Point.Y = 33 * $k
             $RadioButton.Location = $System_Drawing_Point
             $RadioButton.Name = "radioButton" + $k
             $System_Drawing_Size = New-Object System.Drawing.Size
             $System_Drawing_Size.Height = 50
             $System_Drawing_Size.Width = 200
             $RadioButton.Size = $System_Drawing_Size
             $RadioButton.TabIndex = 3
             $RadioButton.TabStop = $true
    # >>>>>>>>> begin Geändert
    		 # Der BaseName einer Datgei ist immer ohne Pfad und dateiendung!
    		 $RadioButton.Text = -join ($k,". ",$File.BaseName)
    		 # Jedes Windows Forms Control hat das Property Tag
    		 # dort kan man ein Objekt ablegen
    		 # Ich lege dort die Datei als Objekt hinein
    		 $RadioButton.Tag = $File
    # <<<<<<<<<<< end geändert 
             $RadioButton.UseVisualStyleBackColor = $True
             $Form.Controls.Add($RadioButton)
          
       }
    }
    ##############################################################
    #region Generated Form Objects
    $form1 = New-Object System.Windows.Forms.Form
    $button3 = New-Object System.Windows.Forms.Button
    $button2 = New-Object System.Windows.Forms.Button
    $button1 = New-Object System.Windows.Forms.Button
    #endregion Generated Form Objects
    $button1_OnClick= 
        {
        Write-Host "D=" $d
        Write-Host "K=" $k
        #write-host "powershell.exe " "$Quelle\$($Files[$d]).ps1 $computername"  
        #Start-Process "powershell.exe " "$Quelle\$($Files[$d]).ps1 $computername"
        }
    $button3_OnClick= 
        {
        $form1.close()
        }
    	
    	
    	
    # >>>>>>>>> begin Geändert	
    $button2_OnClick=  {
    	# jedes Control in der Form durchlaufen
    	ForEach($Control in $form1.Controls){
    		# wenn das Control ein RadioButton ist
    		If($Control -is [System.Windows.Forms.RadioButton]) {
    			# wenn der RadioButton Markiert ist
    			If($Control.Checked -eq $True) {
    				# Im Tag des Controls liegt die Datei als Objekt.
    				# Desshalb können wir hier den Fullname (Pfad) des Datei Objektes auslesen
    				& notepad $Control.Tag.Fullname
    			}
    		}	
    	}
    }
    # <<<<<<<<<<< end geändert 	
    	
    	
    #----------------------------------------------
    #region Generated Form Code
    $System_Drawing_Size = New-Object System.Drawing.Size
    $System_Drawing_Size.Height = 500
    $System_Drawing_Size.Width = 500
    $form1.ClientSize = $System_Drawing_Size
    $form1.DataBindings.DefaultDataSourceUpdateMode = 0
    $form1.Name = "form1"
    $form1.Text = "Client Support"
    $form1.StartPosition = 1
    $form1.FormBorderStyle = 1
    $System_Drawing_Point = New-Object System.Drawing.Point
    $System_Drawing_Point.X = 280
    $System_Drawing_Point.Y = 160
    $button3.Location = $System_Drawing_Point
    $button3.DataBindings.DefaultDataSourceUpdateMode = 0
    $button3.Name = "button3"
    $System_Drawing_Size = New-Object System.Drawing.Size
    $System_Drawing_Size.Height = 35
    $System_Drawing_Size.Width = 140
    $button3.Size = $System_Drawing_Size
    $button3.TabIndex = 2
    $button3.Text = "Beenden"
    $button3.UseVisualStyleBackColor = $True
    $button3.add_Click($button3_OnClick)
    $form1.Controls.Add($button3)
    $System_Drawing_Point = New-Object System.Drawing.Point
    $System_Drawing_Point.X = 280
    $System_Drawing_Point.Y = 110
    $button2.Location = $System_Drawing_Point
    $button2.DataBindings.DefaultDataSourceUpdateMode = 0
    $button2.Name = "button2"
    $System_Drawing_Size = New-Object System.Drawing.Size
    $System_Drawing_Size.Height = 35
    $System_Drawing_Size.Width = 140
    $button2.Size = $System_Drawing_Size
    $button2.TabIndex = 1
    $button2.Text = "Notepad"
    $button2.UseVisualStyleBackColor = $True
    $button2.add_Click($button2_OnClick)
    $form1.Controls.Add($button2)
    $System_Drawing_Point = New-Object System.Drawing.Point
    $System_Drawing_Point.X = 280
    $System_Drawing_Point.Y = 60
    $button1.Location = $System_Drawing_Point
    $button1.DataBindings.DefaultDataSourceUpdateMode = 0
    $button1.Name = "button1"
    $System_Drawing_Size = New-Object System.Drawing.Size
    $System_Drawing_Size.Height =35
    $System_Drawing_Size.Width = 140
    $button1.Size = $System_Drawing_Size
    $button1.TabIndex = 0
    $button1.Text = "Run Script"
    $button1.UseVisualStyleBackColor = $True
    $button1.add_Click($button1_OnClick)
    $form1.Controls.Add($button1)
    # Funktion Aufrufen Radiobuttons erzeugen in der Form
    Create-MenuRadioButtons $form1
    #endregion Generated Form Code
    #Show the Form
    $form1.ShowDialog()| Out-Null


    Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    Mein deutscher PowerShell Blog
    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)

    Freitag, 15. November 2013 13:06