Простой однострочный калькулятор

calc

Калькулятор на C#, с использованием библиотеки Excel


Для начала создадим WPF приложение в VisualStudio

Далее подключим библиотеку Microsoft Excel 14.0 Object Library

calc

Разместим на форме две кнопки и TextBox

calc

Пример Xaml файла

<Window x:Class="Calc.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Калькулятор" Height="79" Width="535" Closing="Window_Closing" MinWidth="389" MinHeight="63" Icon="/Calc;component/Calculator.ico" WindowStartupLocation="CenterScreen">
    <Grid>
        <Button Content="Вычислить" Name="button1" HorizontalAlignment="Right" Width="87" Click="button1_Click" ToolTip="Нажмите чтобы подсчитать результат" />
        <TextBox Margin="86,0" Name="textBox1" TextWrapping="Wrap" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" ToolTip="Введите что-нибудь сюда" KeyDown="textBox1_KeyDown" />
        <Button Content="Очистить" HorizontalAlignment="Left" Name="button2" ToolTip="Нажмите, чтобы очистить поле" Width="88" Click="button2_Click" />
    </Grid>
</Window>

C# код с комментариями

using System;
using System.Windows;
using System.Windows.Input;

namespace Calc
{
    public partial class MainWindow : Window
    {
        // объявляем переменную - калькулятор
        Microsoft.Office.Interop.Excel.Application objExcel = new Microsoft.Office.Interop.Excel.Application();

        public MainWindow()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
                // вычислить содержимое textBox1, с помощью метода Evaluate
                textBox1.Text += "=" + Convert.ToString(objExcel.Evaluate(textBox1.Text));
        }

        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            // для освобождения памяти
            objExcel.Quit();
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            // очистка текстового поля
            textBox1.Text = null;
        }

        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                // при нажатии Enter, вызывается событие button1_Click
                button1_Click(sender, e);
            }
        }
    }
}



Добавить комментарий

Your email address will not be published / Required fields are marked *