Управление свойствами элементов

Визуальные элементы Silverlight фактически являются классами в коде, и можно настроить их отображение, изменяя свойства отдельных экземпляров этих элементов. Свойства элементов Silverlight можно задать в области свойств в Visual Studio или в XAML-коде, в котором описываются все элементы страницы. Эти настройки можно задать при создании программы, а также можно устанавливать свойства элементов и во время работы программы, например:

resultTextBlock.Text = result.ToString();

В программе можно управлять любыми свойствами визуальных элементов. Рассмотрение всех существующих свойств элементов выходит за рамки данного курса, но рекомендуется изучить их самостоятельно.

Обработка ошибок. На текущий момент в разработанной на прошлых лекциях программе Сумматор не осуществляется обработка ошибок. Если пользователь введет произвольный текст в элемент TextBox, то программа попытается использовать метод Parse, чтобы преобразовать этот текст в число, и это может завершиться неудачей (рис. 10).

Рис.10. Сообщение об ошибке при вводе недопустимого значения

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

float v1 = float.Parse(firstNumberTextBox.Text);

Если в элемент firstNumberTextBox ввести текст, который не может быть преобразован в число (например, "один"), то возникнет исключение. Можно изменить код, используя другую версию метода Parse:

float v1 = 0;if (!int.TryParse(firstNumberTextBox.Text, out v1)){ // Код для обработки ввода недопустимого значения}

Этот код использует метод TryParse, который возвращает значение false, если элемент firstNumberTextBox будет содержать недопустимый текст.

Изменение цвета текста. При возникновении ошибки можно выделить текст элемента TextBox красным цветом. Silverlight использует кисти для отрисовки элементов на экране. Этот мощный механизм позволяет нарисовать текст, используя изображения или текстуры, и применить некоторые дополнительные эффекты. В Silverlight есть набор стандартных цветов, и можно сделать текст элемента TextBox красным, сделав основную кисть непрерывной красной заливкой:

float v1 = 0; if (!float.TryParse(firstNumberTextBox.Text, out v1)){ firstNumberTextBox.Foreground = new SolidColorBrush(Colors.Red); return; }

Теперь, если пользователь введет недопустимое значение, основной цвет текстового поля станет красным (рис. 11), и выполнение метода завершится без вычисления результата. Однако программа должна выдавать сообщение об ошибке, если пользователь введет недопустимый текст не только в первое, но и во второе текстовое поле.

Кроме этого, в приведенном примере есть еще один недостаток: после того как пользователь исправит ошибку ввода, цвет текста останется красным. Нужно добавить код для возврата цвета текста в первоначальный, когда оба числа будут введены правильно. Для этого нужно сохранить исходную кисть, чтобы ее можно было использовать повторно. Полная версия метода calculateResult может выглядеть так:


private SolidColorBrush errorBrush = new SolidColorBrush(Colors.Red);private Brush correctBrush = null; private void calculateResult(){ bool errorFound = false; if (correctBrush == null) correctBrush = firstNumberTextBox.Foreground; float v1 = 0; if (!float.TryParse(firstNumberTextBox.Text, out v1)) { firstNumberTextBox.Foreground = errorBrush; errorFound = true; } else firstNumberTextBox.Foreground = correctBrush; float v2 = 0; if (!float.TryParse(secondNumberTextBox.Text, out v2)) { secondNumberTextBox.Foreground = errorBrush; errorFound = true; } else secondNumberTextBox.Foreground = correctBrush; if (errorFound) resultTextBlock.Text = "Ошибка при вводе!"; else { float result = v1 + v2; resultTextBlock.Text = result.ToString(); }}

Этот код позволяет обработать возможные ошибки при вводе числовых данных. Часто создание программ, которые получают данные от пользователя, заканчивается созданием большого объема кода для вычисления результата и обработки ошибок при вводе данных.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: