При нажатии на Сумма в примере ArbitraryMethod из Лекция 7, VS 2013 выдается ошибка: Необработанное исключение типа "System.InvalidOperationException" в System.Windows.Forms.dll Дополнительные сведения: Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "lblResult" не из того потока, в котором он был создан. Затем: Необработанное исключение типа "System.InvalidOperationException" в mscorlib.dll Дополнительные сведения: Для каждой асинхронной операции метод EndInvoke может вызываться только один раз. |
Справочные материалы. перевод приложений. специальные возможности
Форматированный вывод строк
На вкладке "Региональные параметры" инструмента "Язык и региональные стандарты" вы могли заметить группу числовых и денежных форматов. В приложениях может потребоваться специальное определение заданного формата, например, вывод результата в рублях или долларах. Рассмотрим это на практике. Создайте новое консольное приложение и назовите его 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).