пятница, 28 мая 2010 г.

WPF. Практика.


До этого момента мы разбирали аспекты работы с интерфейсом. Причем из редактора XAML. Но интерфейс можно и нарисовать ручками, перетаскивая необходимые элементы из ToolBoxa и изменяя их так, как вам надо. Я не стану на этом останавливаться, так как это все просто сделать. Давайте попробуем написать простейшее приложение – и попутно научиться создавать обработчики нажатия клавиш.

Я предлагаю начать делать калькулятор. Очень простой. Для начала он сможет только лишь складывать одноразрядные числа (вот такой вот простейший пример). Я накидал вот такой внешний вид (тоже простой). Можете сделать либо как у меня, либо дизайн позаковыристее:



Я на grid (3) накидал необходимых кнопок, панель ввода сделал следующим способом: на border (1) поместил TextBlock (2) – вот так все и получилось.

Теперь перейдем непосредственно к программированию. Если нам необходимо, что после нажатия на какую-либо кнопку что-либо происходило, то нам надо создать обработчик события. Событие, в нашем случае – это нажатие на кнопку, причем нажатие может быть как мышью, так и клавишей ввод или пробел. Вне зависимости от этого, давайте создадим обработчик события. Для этого дважды щелкните по необходимой кнопке. Вы попадете в редактор кода, где автоматически создастся процедура, обрабатывающая нажатие на необходимую кнопку:

private void button1_Click(object sender, RoutedEventArgs e)

button1 – это имя нашей кнопки, Click – это событие, то есть будет обрабатываться одинарный клик по кнопке. Остальные параметры для нас (пока) не интересны.

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

 decimal d = 0;
        string st = null;

Null – это ничто, то есть это показывает, что переменная (или объект) пуст, так ничего нет.

Вот пример обработки нажатия первой кнопки (с цифрой 1):

private void button1_Click(object sender, RoutedEventArgs e)
        {
            textBlock1.Text = null;
            textBlock1.Text = textBlock1.Text+"1";
            d = d + Convert.ToDecimal(textBlock1.Text);
            if (st == null) st = st + textBlock1.Text;
            else
                st = st + "+" + textBlock1.Text;
            textBlock1.Text = st;
        }

Convert.ToDecimal – это функция преобразования текста в число. После этого кода идет условный оператор, блок if (условие) else. Если (условие) истинно, что выполнится действие, следующее после него. Если (условие) не верно, то выполнится действие, стоящее после ключевого слова else.

Такой код надо вставить в обработчики нажатия всех кнопок (1-9 и для 0).

Теперь нажмите дважды на кнопку «Сброс». Здесь нам надо обнулить наши переменные st и d, а также очистить содержимое TextBlock:

        private void button12_Click(object sender, RoutedEventArgs e)
        {
            textBlock1.Text = null;
            st = null;
            d = 0;
        }

Для обработки результатов ( кнопка«Рассчитать») нужно вывести полученный результат в TextBlock:
         
        private void button3_Click(object sender, RoutedEventArgs e)
        {
            textBlock1.Text = Convert.ToString(d);
        }

Теперь можете запускать и тестировать программу.



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

Комментариев нет:

Отправить комментарий