Читаем Разработка пользовательского интерфейса на основе технологии Windows Presentation Foundation полностью

Комментарий

При нажатии пробела возникают только события KeyDown и KeyUp (и связанные с ними события PreviewKeyDown и PreviewKeyUp), которые реагируют на нажатие любых клавиш, в том числе и не приводящих к генерации отображаемых символов. Мы перехватываем это событие на уровне родителя обоих полей ввода, поэтому оно не доходит до них и пробелы в полях ввода не отображаются.

Заметим, что перехватывать событие на более высоком уровне (на уровне вертикальной панели StackPanel или на уровне окна), не следует, так как в этом случае нажатие пробела не дойдет и до других компонентов окна, в частности, до кнопок. В результате станет недоступной возможность нажать кнопку, выделив ее и нажав клавишу пробела.

Недочет 2. В нашей программе предполагается, что десятичным разделителем является запятая, тогда как при других региональных настройках в системе Windows может использоваться другой разделитель.

Исправление. Измените фрагмент последнего оператора в методе Window_PreviewTextInput:


screen_image_59_461_75

Комментарий

Статическое свойство CurrentCulture класса CultureInfo, определенного в пространстве имен System.Globalization, позволяет получить информацию о региональных настройках, используемых операционной системой, в частности о числовых форматах. Необходимость в указании индекса [0] обусловлена тем, что свойство NumberDecimalSeparator имеет строковый тип, который не совместим по присваиванию с символьным типом. Заметим, что свойство NumberDecimalSeparator доступно только для чтения, однако имеется возможность изменить региональные настройки в целом для конкретного приложения (см. по этому поводу комментарий в проекте CLOCK, п. 4.1).

3.5. Контроль за изменением исходных данных

Добавьте в метод button1_Click следующий оператор:


screen_image_60_178_59


Кроме того, определите для поля ввода textBox1 обработчик события TextChanged, а также свяжите этот обработчик с полем ввода textBox2:


screen_image_60_213_59


screen_image_60_276_59


Результат. При изменении операции или содержимого текстовых полей результат предыдущего вычисления стирается. Это важная возможность, позволяющая предотвратить рассогласование отображаемых данных. При ее отсутствии возможна ситуация, когда после выполнения, например, вычислений вида 3 + 2 (с результатом 5), пользователь изменит первый операнд на 2, получив на экране текст 2 + 2 = 5.

Комментарии

1. Здесь мы использовали более традиционный способ связывания одного обработчика события с несколькими компонентами – путем указания этого обработчика в xaml-файле в описании каждого компонента.

Впрочем, в данном случае тоже можно было воспользоваться механизмом маршрутизируемых событий и после создания обработчика textBox1_TextChanged для компонента textBox1 не копировать соответствующий атрибут в компонент textBox2, а переместить его в родительский компонент StackPanel, снабдив префиксом TextBox:

screen_image_60_516_46


screen_image_61_56_61
Перейти на страницу:

Похожие книги

Теория государства и права
Теория государства и права

Учебник, написанный в соответствии с курсом «Теория государства и права» для юридических РІСѓР·ов, качественно отличается РѕС' выходивших ранее книг по этой дисциплине. Сохраняя все то ценное, что наработано в теоретико-правовой мысли за предыдущие РіРѕРґС‹, автор вместе с тем решительно отходит РѕС' вульгаризированных догм и методов, существенно обновляет и переосмысливает РІРѕРїСЂРѕСЃС‹ возникновения, развития и функционирования государства и права.Книга, посвященная современной теории государства и права, содержит СЂСЏРґ принципиально новых тем. Впервые на высоком теоретическом СѓСЂРѕРІРЅРµ осмыслены и изложены РІРѕРїСЂРѕСЃС‹ новых государственно-правовых процессов современного СЂРѕСЃСЃРёР№ского общества. Дается характеристика гражданского общества в его соотношении с правом и государством.Для студентов, аспирантов, преподавателей и научных работников юридических РІСѓР·ов.Р

Алла Робертовна Швандерова , Анатолий Борисович Венгеров , Валерий Кулиевич Цечоев , Михаил Борисович Смоленский , Сергей Сергеевич Алексеев

Детская образовательная литература / Государство и право / Юриспруденция / Учебники и пособия / Прочая научная литература / Образование и наука
История Беларуси. С древнейших времен до 2013 г.
История Беларуси. С древнейших времен до 2013 г.

Представлена история Беларуси с древнейших времен до наших дней. Освещаются проблемы этногенеза (происхождения) белорусов, формирования белорусской народности и нации, становления белорусской государственности, социально-экономического, политического и культурного развития белорусских земель в составе Древнерусского государства, Великого Княжества Литовского, Речи Посполитой, Российской империи. Особое внимание уделяется истории советского периода, советской модели модернизации общества, проблемам развития суверенной Республики Беларусь.Первое издание вышло в 2010 г.Для студентов и преподавателей высших учебных заведений, а также учащихся средних специальных и профессионально-технических учебных заведений, лицеев, гимназий, всех, кто интересуется историей Отечества.

Евгений Константинови Новик , Игорь Леонидович Качалов , Наталия Евгеньевна Новик

Детская образовательная литература / История / Учебники и пособия ВУЗов / Книги Для Детей / Образование и наука