文本框中的PowerShell.NET粗体文本

文本框中的PowerShell.NET粗体文本,.net,forms,powershell,.net,Forms,Powershell,是否有一种简单的方法可以将“版本xx”等标题以粗体显示?开始使用标题标签有点烦人,因为文本会随着时间的推移而增长,每次都必须重新定位 代码: $P0Label2 = New-Object System.Windows.Forms.TextBox $P0Label2.Location = New-Object System.Drawing.Point(8,28) $P0Label2.Size = New-Object System.Drawing.Size(516,340) $P0Label2.R

是否有一种简单的方法可以将“版本xx”等标题以粗体显示?开始使用标题标签有点烦人,因为文本会随着时间的推移而增长,每次都必须重新定位

代码:

$P0Label2 = New-Object System.Windows.Forms.TextBox
$P0Label2.Location = New-Object System.Drawing.Point(8,28)
$P0Label2.Size = New-Object System.Drawing.Size(516,340)
$P0Label2.ReadOnly = $True
$P0Label2.WordWrap = $True
$P0Label2.ScrollBars = 'Vertical'
$P0Label2.Multiline = $True
$P0Label2.BackColor = 'LightSteelBlue'
$P0Label2.Text = 
    "Version 2.0:",
    "- 2015/01/05 Stuff",
    "- 2015/01/09 Stuff",
    "Version 1.0:",
    "- 2014/04/25 Stuff" | foreach {"$_`r`n"}
$P0.Controls.Add($P0Label2) 
$P0Label2 = New-Object System.Windows.Forms.RichTextBox
$P0Label2.Location = New-Object System.Drawing.Point(8,28)
$P0Label2.Size = New-Object System.Drawing.Size(516,340)
$P0Label2.ReadOnly = $True
$P0Label2.WordWrap = $True
$P0Label2.ScrollBars = 'Vertical'
$P0Label2.Multiline = $True
$P0Label2.BackColor = 'LightSteelBlue'
$P0Label2.Text = 
    "Version 2.0:",
    "- 2015/01/05 Stuff",
    "- 2015/01/09 Stuff",
    "Version 1.0:",
    "- 2014/04/25 Stuff" | foreach {"$_`r`n"}

"Version 2.0:",
"Version 1.0:" | foreach {
    $oldFont =  $P0Label2.Font
    $font = New-Object Drawing.Font($oldFont.FontFamily, $oldFont.Size, [Drawing.FontStyle]::Bold)
    $string = $_
    $P0Label2.SelectionStart = $P0Label2.Text.IndexOf($string)
    $P0Label2.SelectionLength = $string.length
    $P0Label2.SelectionFont = $font
    $P0Label2.DeselectAll()
}
$P0.Controls.Add($P0Label2) 
谢谢你的帮助

感谢下面的Micky提供完整解决方案:

$P0Label2 = New-Object System.Windows.Forms.TextBox
$P0Label2.Location = New-Object System.Drawing.Point(8,28)
$P0Label2.Size = New-Object System.Drawing.Size(516,340)
$P0Label2.ReadOnly = $True
$P0Label2.WordWrap = $True
$P0Label2.ScrollBars = 'Vertical'
$P0Label2.Multiline = $True
$P0Label2.BackColor = 'LightSteelBlue'
$P0Label2.Text = 
    "Version 2.0:",
    "- 2015/01/05 Stuff",
    "- 2015/01/09 Stuff",
    "Version 1.0:",
    "- 2014/04/25 Stuff" | foreach {"$_`r`n"}
$P0.Controls.Add($P0Label2) 
$P0Label2 = New-Object System.Windows.Forms.RichTextBox
$P0Label2.Location = New-Object System.Drawing.Point(8,28)
$P0Label2.Size = New-Object System.Drawing.Size(516,340)
$P0Label2.ReadOnly = $True
$P0Label2.WordWrap = $True
$P0Label2.ScrollBars = 'Vertical'
$P0Label2.Multiline = $True
$P0Label2.BackColor = 'LightSteelBlue'
$P0Label2.Text = 
    "Version 2.0:",
    "- 2015/01/05 Stuff",
    "- 2015/01/09 Stuff",
    "Version 1.0:",
    "- 2014/04/25 Stuff" | foreach {"$_`r`n"}

"Version 2.0:",
"Version 1.0:" | foreach {
    $oldFont =  $P0Label2.Font
    $font = New-Object Drawing.Font($oldFont.FontFamily, $oldFont.Size, [Drawing.FontStyle]::Bold)
    $string = $_
    $P0Label2.SelectionStart = $P0Label2.Text.IndexOf($string)
    $P0Label2.SelectionLength = $string.length
    $P0Label2.SelectionFont = $font
    $P0Label2.DeselectAll()
}
$P0.Controls.Add($P0Label2) 

以下是使用RichText执行此操作的一种方法:

$P0Label2 = New-Object System.Windows.Forms.RichTextBox
让我们找到使用的字体,并使用粗体制作新版本:

$oldFont =  $P0Label2.Font
$font = New-Object Drawing.Font($oldFont.FontFamily, $oldFont.Size, [Drawing.FontStyle]::Bold)  
现在让我们假设我们希望在您的文本中高亮显示V1.0版
。我们首先找到它的索引作为
$P0Label2.Text
的一部分,然后使用SelectionStart和SelectionLength来选择它,我们将字体更改为粗体版本,然后取消选择,将文本保留为粗体

$string = "Version 1.0"
$P0Label2.SelectionStart = $P0Label2.Text.IndexOf($string)
$P0Label2.SelectionLength = $string.length
$P0Label2.SelectionFont = $font
$P0Label2.DeselectAll()

所以它不是基于标签的,但它可以是解决问题的一个开始。

可能的重复不是真的,我更多的是寻找允许更灵活的东西,比如
b\b
。但这不起作用…谢谢你,米奇,可能有打字错误吗?当我遇到错误时:
新对象:异常调用带有“3”参数的.ctor:“值不能为null。参数名称:family”
有趣的是,尝试
$oldFont=$P0Label2.Font
,应该也可以。正确的,我还必须更改为
$P0Label2.Font=$Font
。现在已经没有错误了。但是,现在全部用粗体表示..:PYE不会更改
$P0Label2.Font
因为这是您的普通字体,所以只更改
$P0Label2.SelectionFont
。Ohh忘记了一行代码:
$P0Label2=新对象系统.Windows.Forms.RichTextBox
,很抱歉忘记了。要使用上述方法,您需要一个RichTextBox。