Jump to content

newbi2009

Members
  • Gesamte Inhalte

    28
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von newbi2009

  1. nein, sorry. Ich glaube dass Du hier nicht richtig liegst. das Objekt objForm hat keine Methode .Name. Es gibt also kein objForm.Name Mit der Deklaration $objForm = New-Object System.Windows.Forms.Form habe ich ein neues Fenster-Objekt generiert und diesem direkt den Namen $objForm zugewiesen Ich habe die Variable schon absichtlich mit einem String gefüllt, damit ich später in der Funktion diesen String als Teils des Befehls wieder nutzen kann, den ich absetzen möchte... Ich habe das jetzt so gelöst, dass ich den kompletten Befehl in die Variable geschrieben habe $done_show = {$objForm.Controls.Add($done)} und in der Funktion den Befehl mit . $done_show ausführe
  2. Ja, danke - habe ich gesehen und meine Frage gerade abgeändert Aber die Antwort hilft mir nicht so wirklich, um ehrlich zu sein - was muss ich denn anstellen, damit ich meine gewünschte Ausgabe hinbekomme? ... auch wenn ich denkompletten Befehl, den ich in der Funktion brauche im Hauptfenster als String in eine Variable schreibe $done_show = 'objForm.Controls.Add($done)' und diese Variable dann an die Funktion übergebe $btn5.add_Click{(done $done_show)} abgeänderte Funktion sieht dann so aus function done { param ($done_show) $done = New-Object System.Windows.Forms.Button $doneFont = New-Object System.Drawing.Font("Calibri",18,[System.Drawing.FontStyle]::Bold) $done.Font = $doneFont $done.Location = New-Object System.Drawing.Size(320,200) $done.Size = New-Object System.Drawing.Size(150,50) $done.ForeColor="red" $done.Text = "DONE!" write-host $done_show $done_show $done.Add_Click({ $WindowName.Controls.Remove($done), $WindowName.Controls.refresh() }) $done_show } wird beim Ausführen der write-host-Befehl richtig ausgeführt aber die letzte Zeile ($done_show) wird einfach ignoriert. Ich brauche aber als letzte ausgeführte Zeile ein objForm.Controls.Add($done)
  3. Hallo Forum, I habe ein Problem, bei dem ich hoffe, dass Ihr mir helfen könnt: Ich habe ein Fenster per Powershell mit dem Namen "$objForm" gebaut $objForm = New-Object System.Windows.Forms.Form in dieses Fensterhabe ich (unter Anderem) einen Knopf (mit namen $btn5) eingebaut. Wird dieser Knopf gedrückt, soll eine Funktion (mit dem namen done) aufgerufen werden und eine Variable ($WindowName) übergeben werden. Diese Funktion soll einen "Done-Knopf" in das geöffnete Fenster-Formular einbblenden. (Das Ganze funktioniert einwandfrei, solange ich den Code nicht als Funktion auslagere) In dem "Hauptfenster-Formular" habe ich 'objForm' an die Variable $WindowName übergeben (das ist ja der Name des Fenster-Formulares) $WindowName ='objForm' um die Funktion dann aufzurufen, wird beim Betätigen des entsprechnden Knopfes folgendes ausgeführt (also Aufruf der Funktion "done" mit Übergabe der Varibale "$WindowName") $btn5.add_Click{(done $WindowName)} Meine Funktion sieht so aus : function done { param ($WindowName) $done = New-Object System.Windows.Forms.Button $doneFont = New-Object System.Drawing.Font("Calibri",18,[System.Drawing.FontStyle]::Bold) $done.Font = $doneFont $done.Location = New-Object System.Drawing.Size(320,200) $done.Size = New-Object System.Drawing.Size(150,50) $done.ForeColor="red" $done.Text = "DONE!" write-host 'Hello' write-host $WindowName $WindowName $done.Add_Click({ $WindowName.Controls.Remove($done), $WindowName.Controls.refresh() }) $WindowName.Controls.Add($done) } Starte ich das Programm jetzt (Drücke also den Knopf 5 im Hauptfenster-Formular), bekomme ich foilgende Meldung: Hello objForm you cannot call a method on a null-valued expression. At C:\temp\done.ps1:22 char:1 +WindowName.Controls.Add($done) + +CategoryInfo : InvalidOperation: (:) [], RuntimeException +Fully QualifiedErrorID: InvokeMethodOnNull Das 'Hello' kommt vom 1. wrtite-Host Befehl (Da wollte ich nur schauen, ob write-Host überhaupt funktioniert) Das 'objForm' kommt vom 2. write-Host Befehl (Super! Die variable '$WindowName' wird also übergeben!!) Aber warum wird der Inhalt Variable 'WindowName' nicht auch beim nächsten befehl angewendet? Das $WindowName.Controls.Add($done) sollte eigentlich umgewandelt werden in ein ' objForm.Controls.Add($done)' - dann wäre alles super und es würde funktionieren. Aber das bekomme ich nicht hin?! Vielen Dank für jede Hilfe newbi
×
×
  • Neu erstellen...