Powershell Winform RichTextBox颜色?

时间:2014-09-11 00:31:07

标签: winforms powershell

我一直在寻找解决这个问题的方法。 (尝试解码这些但收效甚微:http://poshcode.org/4123 http://poshcode.org/4123 http://msdn.microsoft.com/en-us/library/dd30h2yb(v=vs.110).aspx

这似乎应该是简单的事情,但我却在努力解决这个问题。似乎唯一的方法是使用selectionstart,selectionlength,selectioncolor,然后在打印时取消选择。我猜测我可能必须在算法上找出一种方法来只选择我想要的richtextbox的位置。我想在尝试这样做之前先问一下。

问题:

您如何选择在另一条线上开始选择?

有没有办法只为我想要的选择着色而无需在richtextbox中手动选择位置?**?

通常有更好的方法来实现这一目标吗?

此外,是否有人知道任何针对Powershell特定的Winforms的优秀资源或参考资料?

请帮忙。感谢。



以下是我尝试做的事情:

function UserInformation {
    $userdata = Get-ADUser $34 -properties *

 ## IF LOCKED OUT, MAKE RED ##
    if ($userdata.lockedout -eq $false) {
        $outputBox.SelectionStart = #????
        $outputBox.SelectionLength = #????
        $outputBox.SelectionColor = [Drawing.Color]::Green

    elseif ($userdata.lockedout -eq $true) {
        $outputBox.SelectionStart = #????
        $outputBox.SelectionLength = #????
        $outputBox.SelectionColor = [Drawing.Color]::Red

    }

## GUI ##
    $outputBox = New-Object System.Windows.Forms.RichTextBox #creating the text box
    $outputBox.Location = New-Object System.Drawing.Size(5,40)
    $outputBox.Size = New-Object System.Drawing.Size(565,200)
    $outputBox.MultiLine = $True
    $outputBox.Anchor = [System.Windows.Forms.AnchorStyles]::Bottom -bor [System.Windows.Forms.AnchorStyles]::Right -bor 
                    [System.Windows.Forms.AnchorStyles]::Top -bor [System.Windows.Forms.AnchorStyles]::Left 
    $outputBox.ScrollBars = "Vertical"
    $Form.Controls.Add($outputBox) 

2 个答案:

答案 0 :(得分:3)

你的帖子已经差不多一年了,你可能已经有了解决方案,但是我很幸运使用了ForeColor属性来使用RichTextBox表单。

https://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox_properties(v=vs.110).aspx

这是我在PowerShell中的代码:

$outputBox = New-Object System.Windows.Forms.RichTextBox 
$outputBox.Location = New-Object System.Drawing.Size(8,175) 
$outputBox.Size = New-Object System.Drawing.Size(870,428) 
$outputBox.Font = New-Object System.Drawing.Font("Lucida Console",16)
$outputBox.ForeColor = [Drawing.Color]::Green
$outputBox.MultiLine = $True 
$outputBox.ReadOnly = $True

然后根据需要在行中(在此示例中更改为绿色)

$outputBox.Font = New-Object System.Drawing.Font("Trebuchet MS",14)
$outputBox.ForeColor = [Drawing.Color]::Green
$outputBox.text="Please standby as we connect to Office 365.  Updating commands ..."

答案 1 :(得分:0)

要执行此操作,您需要在每个新添加的行之前添加一个选择。新行必须通过以下方式添加:

AppendText()

此外,您还必须在换行的末尾加上`n 来设置换行符。

$outputBox.SelectionColor = [Drawing.Color]::Green
$outputBox.AppendText("text here...`n")