Опубликован: 11.09.2006 | Доступ: свободный | Студентов: 7649 / 473 | Оценка: 4.26 / 3.45 | Длительность: 30:46:00
ISBN: 978-5-9556-0080-2
Лекция 8:

Справочные материалы. перевод приложений. специальные возможности

Форматированный вывод строк

На вкладке "Региональные параметры" инструмента "Язык и региональные стандарты" вы могли заметить группу числовых и денежных форматов. В приложениях может потребоваться специальное определение заданного формата, например, вывод результата в рублях или долларах. Рассмотрим это на практике. Создайте новое консольное приложение и назовите его FormatOutput. Весь дальнейший код будем писать внутри блока try…catch:

try 
  {
    //Дальнейший код…
  }
catch (Exception ex)
  {
  Console.WriteLine(ex.Message);
  }

Для начала разберемся с конструкцией, которую вы наверняка много раз встречали:

int i = 15;
Console.WriteLine("{0}", i);

При запуске на экран выведется число 15. Зачем так писать? Не проще ли вывести на экран это число следующим образом:

int i = 15;
Console.WriteLine( i);

Результат будет в точности таким же! Дело в том, что сами скобки и числа в них ({0}, {1}) — так называемые подстановочные знаки, позволяющие легко добиваться более сложного вывода на экран, например, такого:

int x = 23, y = –4, z = 5, j = 20, v = 40;
Console.WriteLine ("переменная x = {0}, переменная y = {1}, 
переменная z = {2}, переменная j = {3}, 
переменная v = {4}", x, y, z, j, v);

Результатом будет:

переменная x = 23, переменная y = –4, переменная z = 5, 
переменная j = 20, переменная v = 40

Опять-таки, такой же результат можно получить другим способом:

Console.WriteLine("переменная " + x);
Console.WriteLine("переменная " + y);
Console.WriteLine("переменная " + z);
Console.WriteLine("переменная " + j);
Console.WriteLine("переменная " + v);

Использование подстановочных знаков здесь, несомненно, является оправданным.

Для вывода в определенном формате подстановочные знаки с параметрами оказываются просто незаменимыми. Некоторые параметры подстановочных знаков:

  • d — десятичный формат. Позволяет задать общее количество знаков (при необходимости число дополняется слева нулями).
    int a = 38;
      //Результат  0038
      Console.WriteLine("a={0:d4}", a);
  • f — формат с фиксированной точностью. Позволяет задать количество знаков после запятой.
    double pi = 3.1415926;
      //Результат 3.14
      Console.WriteLine("pi={0:f2}", pi);
  • x — шестнадцатеричный формат.
    int b = 255;
      //Результат FF.
      Console.WriteLine("b={0:X}", b);
    int c = 255;
      //Результат ff.
      Console.WriteLine("c={0:x}", c);
  • c — денежный формат (добавляет знак доллара и показывает два знака после запятой).
    double d = 1003.214;
      //Результат $1, 003.14 в английской версии Windows (или при выборе 
      //английского языка (США) на вкладке "Региональные параметры" инструмента 
      //"Язык и региональные параметры")
      //1 003,14 р. в русской.
    Console.WriteLine("d={0:c}", d);
  • e — вывод числа в экспоненциальной форме.
    double e = 213.1;
      //Результат 2.131000e+002
      Console.WriteLine("e={0:e}", e);

На диске, прилагаемом к книге, вы найдете приложение FormatOutput (Code\Glava8\ FormatOutput)

Специальные возможности

Операционная система Windows предоставляет способы работы пользователям с ограниченными возможностями. Экранный диктор — одна из специальных утилит системы — произносит вслух заголовки программ, названия элементов управления, помогая ориентироваться людям с частичной или полной потерей зрения. Для запуска этой утилиты в меню "Пуск" выбираем команду "Выполнить" (Эквивалентное сочетание клавиш Windows+R) и вводим в строке narrator. Запущенный диктор объявляет о событиях на экране, читает вслух печатаемые символы, правда, только на английском языке.

Некоторые свойства элементов управления были созданы именно для поддержки специальных возможностей. Скопируйте приложение Calculator из "Введение в windows-формы" . Значение свойства AccessibleName определяет текст, произносимый экранным диктором. Устанавливаем следующие значения этого свойства элементам управления, размещенным на форме:

Свойство Name элемента Свойство AccessibleName элемента
txtOutput Display
btn0 zero
btn1 one
btn2 two
btn3 three
btn4 four
btn5 five
btn6 six
btn7 seven
btn8 eight
btn9 nine
btnChangesign change sign
btnpoint point
btn_delenie divide
btn_umnojenie multiply
btn_minus minus
btn_plus plus
btn_sbros reset
btn_ravno equal

Запускаем приложение и экранного диктора. При нажатии клавиш курсором мыши диктор озвучивает их — можно набирать выражения, практически не глядя на экран.

Другие специальные свойства, такие как AccessibleDescription и AccessibleRole, применяемые гораздо реже, также могут быть использованы для разработки специализированных приложений. Подробное описание их см. в MSDN.

На диске, прилагаемом к книге, вы найдете приложение Calculator с поддержкой свойства AccessibleName. (Code\Glava8\Calculator).

Елена Дьяконова
Елена Дьяконова

При нажатии на Сумма в примере ArbitraryMethod из Лекция 7, VS 2013 выдается ошибка: 

Необработанное исключение типа "System.InvalidOperationException" в System.Windows.Forms.dll

Дополнительные сведения: Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "lblResult" не из того потока, в котором он был создан.

Затем:

Необработанное исключение типа "System.InvalidOperationException" в mscorlib.dll

Дополнительные сведения: Для каждой асинхронной операции метод EndInvoke может вызываться только один раз.

Александр Сороколет
Александр Сороколет

Свойство WindowState формы blank Maximized. Не открывается почемуто на всё окно, а вот если последующую форму бланк открыть уже на макс открывается :-/