Создание первого приложения

Последнее обновление: 1.11.2015

Наш первый проект не просто так назван SilverlightCalculator, поэтому создадим калькулятор, который будет более наглядным примером, чем HelloWorld. Тем более, что HelloWorld - это не приложение, это всего лишь HelloWorld.

Логика нашего калькулятора будет очень проста. У нас будут три глобальных переменные: две для левого и правого операндов, и одна для знака операции. При нажатии на число, оно будет добавляться как строка справа к текущему операнду. При нажатии на кнопку со знаком операции у нас будут производиться вычисления. Также нам понадобится кнопка CLEAR для очиcтки все переменных и текстового поля. В итоге калькулятор будет выглядеть следующим образом:

Итак, в разметке XAML у нас следующий код:

<UserControl x:Class="SilverlightCalculator.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="300">

    <Grid x:Name="LayoutRoot" Background="White">
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <TextBlock x:Name="textBlock" Grid.Column="0" Grid.ColumnSpan="4" />
        <Button Grid.Column="0" Grid.Row="1">1</Button>
        <Button Grid.Column="1" Grid.Row="1">2</Button>
        <Button Grid.Column="2" Grid.Row="1">3</Button>
        <Button Grid.Column="3" Grid.Row="1">4</Button>
        <Button Grid.Column="0" Grid.Row="2">5</Button>
        <Button Grid.Column="1" Grid.Row="2">6</Button>
        <Button Grid.Column="2" Grid.Row="2">7</Button>
        <Button Grid.Column="3" Grid.Row="2">8</Button>
        <Button Grid.Column="0" Grid.Row="3">9</Button>
        <Button Grid.Column="1" Grid.Row="3">0</Button>
        <Button Grid.Column="2" Grid.Row="3">+</Button>
        <Button Grid.Column="3" Grid.Row="3">-</Button>
        <Button Grid.Column="0" Grid.Row="4">*</Button>
        <Button Grid.Column="1" Grid.Row="4">/</Button>
        <Button Grid.Column="2" Grid.Row="4">=</Button>
        <Button Grid.Column="3" Grid.Row="4">CLEAR</Button>
    </Grid>
</UserControl>

А файл кода должен выглядеть следующим образом:

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Shapes;

namespace SilverlightCalculator
{
    public partial class MainPage : UserControl
    {
        string leftop = ""; // Левый операнд
        string operation = ""; // Знак операции
        string rightop = ""; // Правый операнд

        public MainPage()
        {
            InitializeComponent();

            // Добавляем обработчик для всех кнопок на гриде
            foreach (UIElement c in LayoutRoot.Children)
            {
                if (c is Button)
                {
                    ((Button)c).Click += Button_Click;
                }
            }
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            // Получаем текст кнопки
            string s = (string)((Button)e.OriginalSource).Content;
            // ДОбавляем его в текстовое поле
            textBlock.Text += s;
            int num;
            // Пытаемся преобразовать его в число
            bool result =Int32.TryParse(s, out num);
            // Если текст - это число
            if (result == true)
            {
                // Если операция не задана
                if (operation == "")
                {
                    // Добавляем к левому операнду
                    leftop += s;
                }
                else
                {
                    // Иначе к правому операнду
                    rightop += s;
                }
            }
            // Если было введено не число
            else
            {
                // Если равно, то выводим результат операции
                if (s == "=")
                {
                    Update_RightOp();
                    textBlock.Text += rightop;
                    operation = "";
                }
                // Очищаем поле и переменные
                else if (s == "CLEAR")
                {
                    leftop = "";
                    rightop = "";
                    operation = "";
                    textBlock.Text = "";
                }
                // Получаем операцию
                else
                {
                    // Если правый операнд уже имеется, то присваиваем его значение левому
                    // операнду, а правый операнд очищаем
                    if (rightop != "")
                    {
                        Update_RightOp();
                        leftop = rightop;
                        rightop = "";
                    }
                    operation = s;
                }
            }
        }
        // Обновляем значение правого операнда
        private void Update_RightOp()
        {
            int num1 = Int32.Parse(leftop);
            int num2 = Int32.Parse(rightop);
            // И выполняем операцию
            switch (operation)
            {
                case "+":
                    rightop = (num1 + num2).ToString();
                    break;
                case "-":
                    rightop = (num1 - num2).ToString();
                    break;
                case "*":
                    rightop = (num1 * num2).ToString();
                    break;
                case "/":
                    rightop = (num1 / num2).ToString();
                    break;
            }
        }
    }
}

Запускаем приложение на выполнение и получаем примитивный калькулятор.


Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850