如何限制TextBox中的行数并将行拆分为字符串?

时间:2018-09-21 14:21:40

标签: arrays powershell textbox multiline

我如何才能实现多行文本框的输入仅适用于特定数量的行,例如仅10行。 此外,我想获得每行的输入并将每行写入一个单独的变量,以便以后使用此变量。如果用户收到一个警告框,提示只能显示10行,那将是很好的选择。 任何帮助将不胜感激

[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null

#Assembly PresentationFramework wird geladen
Add-Type -AssemblyName PresentationFramework
$form = New-Object System.Windows.Forms.Form
$form.StartPosition = 'CenterScreen' #Formstartposition Zentrum
$form.Size = New-Object System.Drawing.Size(500,400)
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.DataBindings.DefaultDataSourceUpdateMode = 0
$textBox.Location = New-Object System.Drawing.Point((110),(90))
$textBox.Size = New-Object System.Drawing.Size(288,150)
$textBox.TabIndex = 0
$textBox.Multiline =$true

$form.Controls.Add($textBox)
$form.ShowDialog() | Out-Null

1 个答案:

答案 0 :(得分:1)

1。获取 TextChanged 事件的行数。

2。将 iList 转换为 ArrayList

3。获取最大行数与当前行数之差。

4。从 ArrayList 中删除范围。

5。将文本框的内容设置为 Arraylist

6。将光标设置在文本框的结尾。

$TextboxMaxLines = 10
$textBox.Add_TextChanged({
    If($textBox.Lines.Count -gt $TextboxMaxLines){
        [System.Collections.ArrayList]$AL = $textBox.Lines
        [int]$LC = ($textBox.Lines.Count - $TextboxMaxLines)
        $Al.RemoveRange($TextboxMaxLines, $LC)
        $textbox.Lines = $AL
        $textbox.SelectionStart = ($textbox.Text.Length)
        $textbox.SelectionLength = 0
    }
})