Попытка написать простую форму Powershell для поиска строк. Два текстовых поля, одно для вывода, второе для поиска.
Цель: введите строку для поиска> нажмите enter
> искомая строка будет окрашена в выходной текст (если найден)
Пример:
OutputBox - text for example
SearchBox - ex
После действия поиска - t/red>/ex/<red/t for /red>/ex/<red/ample
Пока используется код из link1 и link2 , и у него есть две проблемы:
appendtext
не очень хорош в моем случае, он портит мой выходной контент, пытаясь найти решение с помощью методаreplace
- Я не знаю почему, но
SelectionStart
иSelectionLength
из link2 не работают для меня. Он не выделяет текст, хотя находит правильную позицию с правильной длиной
Код поиска (случай выбора текста по ссылке2):
$SearchInput = New-Object System.Windows.Forms.TextBox
$SearchInput.Dock = "Bottom"
$Form.Controls.Add($SearchInput)
$SearchInput.Add_KeyDown({if ($_.KeyCode -eq "Enter")
{
$pos = $outputBox.Text.IndexOf($($SearchInput.text))
if ($pos -ne -1) {
$outputBox.SelectionStart = $pos
$outputBox.SelectionLength = $($($SearchInput.text).Length)
}
}
})
Код OutputBox:
$outputBox = New-Object System.Windows.Forms.RichTextBox
$outputBox.Location = New-Object System.Drawing.Size(0,250)
$outputBox.Size = New-Object System.Drawing.Size(780,405)
$outputBox.MultiLine = $True
$outputBox.ForeColor = "White"
$outputBox.BackColor = "Black"
$outputBox.ScrollBars = "Vertical"
$outputBox.ReadOnly=$True
$Form.Controls.Add($outputBox)