1

Попытка написать простую форму Powershell для поиска строк. Два текстовых поля, одно для вывода, второе для поиска.

Цель: введите строку для поиска> нажмите enter > искомая строка будет окрашена в выходной текст (если найден)

Пример:

OutputBox - text for example

SearchBox - ex

После действия поиска - t/red>/ex/<red/t for /red>/ex/<red/ample

Пока используется код из link1 и link2 , и у него есть две проблемы:

  1. appendtext не очень хорош в моем случае, он портит мой выходной контент, пытаясь найти решение с помощью метода replace
  2. Я не знаю почему, но 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) 

0