Просто запишите, что находится в текстовом поле события нажатия кнопки.
Вам не нужно показывать всю форму, только ее часть, которая имеет отношение к делу.
Вы могли бы просто создать простой диалог для того же варианта использования.
То, что вы просите, является очень распространенной задачей. На YouTube буквально тонны примеров и видео, которые показывают, как это сделать. Как и на самом сайте.
То, что вы просите, является очень распространенной задачей. Смотрите пример здесь:
Поле ввода пользовательского графического интерфейса Powershell для передачи значений в переменные
Я сократил код для этого ответа.
function button ($mailbx)
{
###################Load Assembly for creating form & button######
[void][System.Reflection.Assembly]::LoadWithPartialName( “System.Windows.Forms”)
[void][System.Reflection.Assembly]::LoadWithPartialName( “Microsoft.VisualBasic”)
#####Define the form size & placement
$form = New-Object “System.Windows.Forms.Form”;
$form.Width = 500;
$form.Height = 150;
$form.Text = $title;
$form.StartPosition = [System.Windows.Forms.FormStartPosition]::CenterScreen;
##############Define text label1
$textLabel1 = New-Object “System.Windows.Forms.Label”;
$textLabel1.Left = 25;
$textLabel1.Top = 15;
$textLabel1.Text = $mailbx;
############Define text box1 for input
$textBox1 = New-Object “System.Windows.Forms.TextBox”;
$textBox1.Left = 150;
$textBox1.Top = 10;
$textBox1.width = 200;
#############Define default values for the input boxes
$defaultValue = “”
$textBox1.Text = $defaultValue;
#############define OK button
$button = New-Object “System.Windows.Forms.Button”;
$button.Left = 360;
$button.Top = 85;
$button.Width = 100;
$button.Text = “Ok”;
############# This is when you have to close the form after getting values
$eventHandler = [System.EventHandler] {
$textBox1.Text;
$textBox2.Text;
$textBox3.Text;
$form.Close();
};
$button.Add_Click($eventHandler) ;
#############Add controls to all the above objects defined
$form.Controls.Add($button);
$form.Controls.Add($textLabel1);
$form.Controls.Add($textBox1);
$ret = $form.ShowDialog();
#################return values
return $textBox1.Text
}
$return = button 'Enter Folders' 'Enter mailbox'
# Below variables will get the values that had been entered by the user
$return
Это всего лишь один из подходов, есть другие способы захвата и возврата текста, например, не показывать никакого кода формы, только возврат из другого простого диалога WinForm…
$result = $form.ShowDialog()
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
($FName = $FName.Text )
($LName = $Lname.Text)
}
То же самое можно сделать и для форм в стиле WPF (Windows Presentation Foundation).