2015-01-09 4 views
1

Есть ли простой способ иметь выделенные жирным шрифтом названия «Версия xx»? Это немного раздражает, чтобы начать использовать ярлыки для названий, так как текст будет расти во времени и должен быть переустановлен каждый раз.PowerShell .NET Полужирный текст в текстовом поле

Код:

$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) 
+0

Возможный дубликат [Как установить текст текстового поля полужирным шрифтом во время выполнения?] (Http://stackoverflow.com/questions/3089033/how-do-i-set-a-textboxs-text-to- bold-at-run-time) –

+0

Не совсем, я больше искал что-то, что позволяет больше гибкости, например 'b \ b'. Но это не сработает. – DarkLite1

ответ

1

Вот способ сделать это с помощью RichText:

$P0Label2 = New-Object System.Windows.Forms.RichTextBox 

Давайте найдем используемый шрифт и сделать новую версию, используя жирный шрифт:

$oldFont = $P0Label2.Font 
$font = New-Object Drawing.Font($oldFont.FontFamily, $oldFont.Size, [Drawing.FontStyle]::Bold) 

Скажем, мы хотим, чтобы hightlight Version 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() 

Так что это не основано на тегах, но это может быть начало что-то выработать.

+0

Спасибо, Микки, может быть, опечатка? Когда я получаю ошибку: «Новый объект: вызов Exception« .ctor »с аргументом« 3 »:« Значение не может быть null. Имя параметра: family »' – DarkLite1

+0

Интересно, попробуйте '$ oldFont = $ P0Label2 .Font', тоже должен работать. –

+0

Правильно, мне также пришлось перейти на '$ P0Label2.Font = $ font'. Теперь больше нет ошибок. Тем не менее, теперь все выделено жирным шрифтом ..: P – DarkLite1