netlib.narod.ru | < Назад | Оглавление | Далее > |
Свойство HotkeyPrefix класса StringFormat определяет, как метод DrawString интерпретирует амперсанды:
Свойства StringFormat (выборочно)
Тип | Свойство | Доступ |
HotkeyPrefix | HotkeyPrefix | Чтение/запись |
Как DrawString интерпретирует амперсанды? Этот вопрос может показаться странным, если не знать, что амперсанд имеет специальное назначение в тексте, используемом в меню, кнопках и других элементах управления — он означает, что следующий за ним знак должен быть подчеркнут и будет использоваться для быстрого доступа к элементу управления.
Свойству HotkeyPrefix присваивается одно из следующих значений перечисления HotkeyPrefix, определенного в пространстве имен System.Drawing.Text:
Перечисление HotkeyPrefix
Член | Значение | Описание |
None | 0 | «&File» -> «&File» (по умолчанию) |
Show | 1 | «&File» -> «File» |
Hide | 2 | «&File» -> «File» |
По умолчанию амперсанды не имеют специального назначения и просто выводятся как знак амперсанда. Значение Show скрывает знак амперсанда и приводит к подчеркиванию следующего знака. Значение Hide скрывает знак амперсанда, но не приводит к подчеркиванию следующего знака.
Даже если вы не работаете с текстом в меню или в элементах управления, можно задействовать это свойство для подчеркивания отдельных букв или слов в блоке текста, передаваемом методу DrawString. Следующая программа демонстрирует эту возможность.
UnderlinedText.cs
//------------------------------------------------ // UnderlinedText.cs (C) 2001 by Charles Petzold //------------------------------------------------ using System; using System.Drawing; using System.Drawing.Text; using System.Windows.Forms; class UnderlinedText: PrintableForm { public new static void Main() { Application.Run(new UnderlinedText()); } public UnderlinedText() { Text = "Underlined Text Using HotkeyPrefix"; Font = new Font("Times New Roman", 14); } protected override void DoPage(Graphics grfx, Color clr, int cx, int cy) { string str = "This is some &u&n&d&e&r&l&i&n&e&d text!"; StringFormat strfmt = new StringFormat(); strfmt.HotkeyPrefix = HotkeyPrefix.Show; grfx.DrawString(str, Font, new SolidBrush(clr), 0, 0, strfmt); } }
Строка текста в листинге этой программы выглядит малопривлекательно, но результат работы программы смотрится неплохо:
Увы, нет средств, которые могли бы выделить отдельные слова курсивом или полужирным начертанием в блоке текста, выводимым DrawString.
Я использую HotkeyPrefix по прямому назначению в программе OwnerDrawMenu в главе 14.
netlib.narod.ru | < Назад | Оглавление | Далее > |