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);
      }
  }

Строка текста в листинге этой программы выглядит малопривлекательно, но результат работы программы смотрится неплохо:


Рис. 9.19.

Увы, нет средств, которые могли бы выделить отдельные слова курсивом или полужирным начертанием в блоке текста, выводимым DrawString.

Я использую HotkeyPrefix по прямому назначению в программе OwnerDrawMenu в главе 14.


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz