Как вывести данные в текстовое поле GUI с помощью рабочего процесса / параллельного интерфейса? - PullRequest
0 голосов
/ 02 августа 2020

Я пытаюсь вывести результат команды ping в текстовое поле (windows forms GUI), используя рабочий процесс / параллельный, и появляется сообщение «Этот тип назначения не поддерживается. Только имена переменных (например: $ переменная) может использоваться как цель оператора присваивания ". изображение Как решить эту проблему?

Add-Type -assembly System.Windows.Forms

workflow parallelPing {

    parallel {
        $text1_box.Text = ping "google.com"
        $text2_box.Text = ping  "8.8.8.8"
        $text3_box.Text = ping "stackoverflow.com" 
    }
}

$gui1 = New-Object System.Windows.Forms.Form
$gui1.Width = 1000
$gui1.Height = 700
$gui1.AutoSize = $false

$text1_box = New-Object System.Windows.Forms.TextBox
$text1_box.Location  = New-Object System.Drawing.Point(10,20)
$text1_box.Multiline = $true
$text1_box.Width = 540
$text1_box.Height = 100
$gui1.Controls.Add($text1_box)

$text2_box = New-Object System.Windows.Forms.TextBox
$text2_box.Location  = New-Object System.Drawing.Point(10,130)
$text2_box.Multiline = $true
$text2_box.Width = 540
$text2_box.Height = 100
$gui1.Controls.Add($text2_box)

$text3_box = New-Object System.Windows.Forms.TextBox
$text3_box.Location  = New-Object System.Drawing.Point(10,240)
$text3_box.Multiline = $true
$text3_box.Width = 540
$text3_box.Height = 100
$gui1.Controls.Add($text3_box)

$getPing = New-Object System.Windows.Forms.Button
$getPing.Location = New-Object System.Drawing.Point(560,110)
$getPing.Width = 170
$getPing.Height = 90
$getPing.Text = '&Ping'
$getPing.Add_Click({parallelPing})
$gui1.Controls.Add($getPing)

$gui1.ShowDialog()

Ответы [ 2 ]

0 голосов
/ 03 августа 2020

Это работает

$getPing = New-Object System.Windows.Forms.Button
$getPing.Location = New-Object System.Drawing.Point(560,110)
$getPing.Width = 170
$getPing.Height = 90
$getPing.Text = '&Ping'
$getPing.Add_Click({pingInfo})
$gui1.Controls.Add($getPing)

workflow parallelPing {

    parallel {
        $workflow:a1 = ping "google.com"
        $workflow:a2 = ping  "8.8.8.8"
        $workflow:a3 = ping "stackoverflow.com" 
    }
    $pingResult = @($a1, $a2, $a3)
    return $pingResult
}

function pingInfo{
    $text1_box.Lines = (parallelPing)[0]
    $text2_box.Lines = (parallelPing)[1]
    $text3_box.Lines = (parallelPing)[2]
}

$gui1.ShowDialog()

Спасибо!

0 голосов
/ 02 августа 2020

Поскольку вы пытаетесь назначить переменную в параллельном блоке, используйте $ workflow для доступа к области рабочего процесса.

$workflow:Text1_box.text = 

Подробнее см. по этой ссылке .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...