Войти

Показать полную графическую версию : [решено] Последовательно перемещение между textbox по заполнению


Хуман
14-04-2021, 16:09
Добрый день, грубо говоря есть 4ре textbox на форме и кнопка которая реализует определенные действия с введенной информацией,
$tbk1 = New-Object System.Windows.Forms.TextBox
$tbk1.MaxLength = 2

$tbk2 = New-Object System.Windows.Forms.TextBox
$tbk2.MaxLength = 2

$tbk3 = New-Object System.Windows.Forms.TextBox
$tbk3.MaxLength = 7

$tbk4 = New-Object System.Windows.Forms.TextBox
$tbk4.MaxLength = 4

$zak = New-Object System.Windows.Forms.Button
$zak.add_Click({неважно какие действия})
как сделать последовательное перемещение от одного textbox к другому после ввода максимально разрешенного количества символов...
заранее благодарен за дельные советы и подсказки.

DJ Mogarych
14-04-2021, 17:02
$wshell = New-Object -ComObject wscript.shell;
$wshell.SendKeys('{TAB}')

?

Iska
14-04-2021, 21:02
DJ Mogarych, не, не то:
после ввода максимальноразрешенного количества символов... »

Iska
14-04-2021, 23:34
Хуман, вот Вам примерная болванка:
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

[System.Windows.Forms.Application]::EnableVisualStyles()

$oForm = New-Object System.Windows.Forms.Form

$oForm.Text = 'Sample form'
$oForm.Size = New-Object System.Drawing.Size(200, 100)
$oForm.StartPosition = 'CenterScreen'

$oTextBox1 = New-Object System.Windows.Forms.TextBox
$oTextBox1.Location = New-Object System.Drawing.Point(10, 10)
$oTextBox1.Size = New-Object System.Drawing.Size(80, 10)
$oTextBox1.MaxLength = 10
$oTextBox1.Add_TextChanged({
if ($this.MaxLength -eq $this.Text.Length -and $this.SelectionStart -eq $this.MaxLength -and $this.SelectionLength -eq 0) {
$oTextBox2.Focus()
}
})
$oForm.Controls.Add($oTextBox1)

$oTextBox2 = New-Object System.Windows.Forms.TextBox
$oTextBox2.Location = New-Object System.Drawing.Point(100, 10)
$oTextBox2.Size = New-Object System.Drawing.Size(80, 10)
$oTextBox2.MaxLength = 10
$oTextBox2.Add_TextChanged({
if ($this.MaxLength -eq $this.Text.Length -and $this.SelectionStart -eq $this.MaxLength -and $this.SelectionLength -eq 0) {
$oTextBox1.Focus()
}
})
$oForm.Controls.Add($oTextBox2)

$oForm.Add_Shown({$oTextBox1.Select()})
$oForm.ShowDialog()

Фокус перебросится на следующее поле ввода при изменении содержимого текущего поля ввода при одновременном выполнении следующих условий:

достигнуто максимальное количество символов;
курсор находится в конце текста;
нет выделения.

Хуман
15-04-2021, 08:38
Большое спасибо!




© OSzone.net 2001-2012