none
Ein Text Feld prüfen ob es leer ist RRS feed

  • Frage

  • Hallo zusammen

    ich experemntiere zur Zeit mit PowerShell. Dazu habe ich ein einfaches Formular genommen:

     

    clear
    
    [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
    [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
    
    $objForm = New-Object System.Windows.Forms.Form 
    $objForm.Text = "Data Entry Form"
    $objForm.Size = New-Object System.Drawing.Size(300,600) 
    $objForm.StartPosition = "CenterScreen"
    
    $OKButton = New-Object System.Windows.Forms.Button
    $OKButton.Location = New-Object System.Drawing.Size(75,250)
    $OKButton.Size = New-Object System.Drawing.Size(75,23)
    $OKButton.Text = "OK"
    $OKButton.Add_Click(
    	{$x=$objTextBox.Text;
    	 $y=$objTextBox2.Text;
    	 $z=$objTextBox3.Text;
    	 $q=$objListbox.SelectedItems;
    	 $objForm.Close()})
    $objForm.Controls.Add($OKButton)
    
    $CancelButton = New-Object System.Windows.Forms.Button
    $CancelButton.Location = New-Object System.Drawing.Size(150,250)
    $CancelButton.Size = New-Object System.Drawing.Size(75,23)
    $CancelButton.Text = "Cancel"
    $CancelButton.Add_Click({$objForm.Close();$cancel = $true})
    $objForm.Controls.Add($CancelButton)
    
    $objLabel = New-Object System.Windows.Forms.Label
    $objLabel.Location = New-Object System.Drawing.Size(10,20) 
    $objLabel.Size = New-Object System.Drawing.Size(280,20) 
    $objLabel.Text = "Please enter the information in the space below:"
    $objForm.Controls.Add($objLabel) 
    
    $objTextBox = New-Object System.Windows.Forms.TextBox 
    $objTextBox.Location = New-Object System.Drawing.Size(10,40) 
    $objTextBox.Size = New-Object System.Drawing.Size(260,20) 
    $objForm.Controls.Add($objTextBox) 
    
    $objTextBox2 = New-Object System.Windows.Forms.TextBox 
    $objTextBox2.Location = New-Object System.Drawing.Size(10,60) 
    $objTextBox2.Size = New-Object System.Drawing.Size(260,20) 
    $objForm.Controls.Add($objTextBox2) 
    
    $objTextBox3 = New-Object System.Windows.Forms.TextBox 
    $objTextBox3.Location = New-Object System.Drawing.Size(10,80) 
    $objTextBox3.Size = New-Object System.Drawing.Size(260,20) 
    $objForm.Controls.Add($objTextBox3)
    
    $objListbox = New-Object System.Windows.Forms.Listbox 
    $objListbox.Location = New-Object System.Drawing.Size(10,100) 
    $objListbox.Size = New-Object System.Drawing.Size(260,20)
    $objListBox.Height = 80
    
    [void] $objListbox.Items.Add("Item 1")
    [void] $objListbox.Items.Add("Item 2")
    [void] $objListbox.Items.Add("Item 3")
    [void] $objListbox.Items.Add("Item 4")
    [void] $objListbox.Items.Add("Item 5")
    [void] $objListbox.Items.Add("Item 6")
    [void] $objListbox.Items.Add("Item 7")
    [void] $objListbox.Items.Add("Item 8")
    [void] $objListbox.Items.Add("Item 9")
    [void] $objListbox.Items.Add("Item 10")
    
    
    $objForm.Controls.Add($objListbox) 
    
    $objForm.Topmost = $True
    
    $objForm.Add_Shown({$objForm.Activate()})
    [void] $objForm.ShowDialog()
    
    if ($cancel) {return} #Beim Betaetigen das Cancel Button wird das Script beendet
    
    $x
    $y
    $z
    $q
    

     


    Wie kann ich überprüfen ob ein Feld leer geblieben ist. Bei manchen Felder soll eine Eingabe Pflicht sein.  Nach dem OK-Klick sollte das Script weiterlaufen, oder ggf. ein PopUp, oder so, erscheinen, dass das Feld XY leer ist. Dann sollte man die Möglichkeit haben dort etwas einzufügen. und nochmals mit Ok bestätigen.

    Kann mir jemen einen Ansatz geben?

     

    Gruss Patric


    Donnerstag, 25. August 2011 13:30

Antworten

  • z.b. in dem du den Eventhandler so abänderst:

    $OKButton.Add_Click(
     { 
       $x=$objTextBox.Text;
       $y=$objTextBox2.Text;
       $z=$objTextBox3.Text;
       $q=$objListbox.SelectedItems;
       if ( !($x.trim()) -or !($y.trim()) -or !($z.trim()) ) { 
       [void] [Windows.Forms.MessageBox]::Show("Bitte alle Felder ausfüllen!", "Fehler", [Windows.Forms.MessageBoxButtons]::ok, [Windows.Forms.MessageBoxIcon]::Warning) 
       }
       else {
       $objForm.Close()
       }
      })
    

    Es wird geprüft ob in jeder der Textbox-Variablen nach Abzug von Leerzeichen ( .trim() ) noch etwas enthalten ist. Falls nicht ( !() ), wird das Popup erstellt und die Form nicht geschlossen.

    Grüße, Denniver

     


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".
    • Als Antwort markiert twisters77 Donnerstag, 25. August 2011 14:25
    Donnerstag, 25. August 2011 14:16
    Moderator

Alle Antworten

  • z.b. in dem du den Eventhandler so abänderst:

    $OKButton.Add_Click(
     { 
       $x=$objTextBox.Text;
       $y=$objTextBox2.Text;
       $z=$objTextBox3.Text;
       $q=$objListbox.SelectedItems;
       if ( !($x.trim()) -or !($y.trim()) -or !($z.trim()) ) { 
       [void] [Windows.Forms.MessageBox]::Show("Bitte alle Felder ausfüllen!", "Fehler", [Windows.Forms.MessageBoxButtons]::ok, [Windows.Forms.MessageBoxIcon]::Warning) 
       }
       else {
       $objForm.Close()
       }
      })
    

    Es wird geprüft ob in jeder der Textbox-Variablen nach Abzug von Leerzeichen ( .trim() ) noch etwas enthalten ist. Falls nicht ( !() ), wird das Popup erstellt und die Form nicht geschlossen.

    Grüße, Denniver

     


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".
    • Als Antwort markiert twisters77 Donnerstag, 25. August 2011 14:25
    Donnerstag, 25. August 2011 14:16
    Moderator
  • Danke das hat sehr geholfen

     

    Gruss

    Donnerstag, 25. August 2011 14:26