Как предотвратить пустое / пустое значение в текстовом поле Windows Form (используя Powershell)? - PullRequest
0 голосов
/ 28 августа 2018

Я сделал форму Windows (это последняя ее часть), которая позволяет пользователю вводить поисковый запрос в текстовое поле. Весь сценарий проверяет сервер на наличие файлов журнала и загружает их на компьютер пользователя. Данные текстового поля содержат строку (дата, номер учетной записи и т. Д.) ... и если оставить ее пустой, она будет рассматриваться как подстановочный знак, загружая каждый файл журнала в выбранную папку. Я не уверен, смогу ли я отключить кнопку «ОК», пока данные не будут введены, или отобразить всплывающее окно / сообщение, предлагающее пользователю ввести поисковый запрос? Я оставил предыдущий код / ​​переменные из этого примера, так как он не имеет отношения к проблеме. Я заранее ценю любую помощь!

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

$form = New-Object System.Windows.Forms.Form 
$form.Text = "Enter search criteria"
$form.Size = New-Object System.Drawing.Size(300,200) 
$form.StartPosition = "CenterScreen"

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)

$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20) 
$label.Size = New-Object System.Drawing.Size(280,20) 
$label.Text = "Enter search term"
$form.Controls.Add($label) 

$textBox = New-Object System.Windows.Forms.TextBox 
$textBox.Location = New-Object System.Drawing.Point(10,40) 
$textBox.Size = New-Object System.Drawing.Size(260,20) 
$form.Controls.Add($textBox) 

$form.Topmost = $True

$form.Add_Shown({$textBox.Select()})
$result = $form.ShowDialog()

if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
    $Search = $textBox.Text
    $Search
}
$UserPath = "C:\GetFiles\getfiles"
& cmd /c $UserPath" "$Search

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Я понял это. Спасибо Тому Шумахеру за помощь в синтаксисе, необходимом для выполнения этого:

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

$form = New-Object System.Windows.Forms.Form 
$form.Text = "Enter search criteria"
$form.Size = New-Object System.Drawing.Size(300,200) 
$form.StartPosition = "CenterScreen"

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)

$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20) 
$label.Size = New-Object System.Drawing.Size(280,20) 
$label.Text = "Enter loan number or date to search"
$form.Controls.Add($label) 

$textBox = New-Object System.Windows.Forms.TextBox 
$textBox.Location = New-Object System.Drawing.Point(10,40) 
$textBox.Size = New-Object System.Drawing.Size(260,20) 
$form.Controls.Add($textBox) 

$form.Topmost = $True

$form.Add_Shown({$textBox.Select()})
do
{
    $result = $form.ShowDialog()
    if  ([string]::IsNullOrEmpty($textbox.text))
        {   
            Write-Warning 'Please enter search term.'
        }
}
until(![string]::IsNullOrEmpty($textbox.text))
    {
    }

if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
    $Search = $textBox.Text
    $Search
}
0 голосов
/ 28 августа 2018

Вот один из способов справиться с этим.

$okbutton.enabled = $false # make this a default

if(![string]::IsNullOrEmpty($textbox.text)) #only enable when you have text in the text box
    {
    $okbutton.enabled = $true
    }

Вам нужно будет использовать событие из текстового поля, чтобы изменить значение кнопки $ ok на enable после ввода текста. Я считаю, что это событие вам нужно: https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.control.textchanged?view=netframework-4.7.2

В зависимости от того, что вы делаете, вам могут понадобиться и другие события.

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