Программирование - это просто
Advertisement
Главная arrow Уроки C# arrow Уроки Visual C# для чайников arrow Visual C# для чайников. Урок 14. Пишем программу "Калькулятор".
26.09.2021 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Visual C# для чайников. Урок 14. Пишем программу "Калькулятор". Печать E-mail
Автор megabax   
07.06.2012 г.
В этой статье я постараюсь максимально просто и понятно изложить основы программирования на языке Delphi

Visual C# для чайников. Урок 14. Пишем программу "Калькулятор".

Исходники к уроку можно скачать здесь.

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

Visual C# для чайников. Урок 14. Пишем программу "Калькулятор".

Теперь пишем обработчик нажатия на кнопочку "+":

        private void button1_Click(object sender, EventArgs e)

        {

            label1.Text = (sender as Button).Text;

        }

Этот же обработчик навешиваем на кнопочки "-", "*","/".  Для этого выделяем кнопочку:

Visual C# для чайников. Урок 14. Пишем программу "Калькулятор".

В инспекторе свойств переключаемся на события, в строке, где у нас событие Click нажимаем стрелочку и выбираем уже готовый обработчик события:

Visual C# для чайников. Урок 14. Пишем программу "Калькулятор".

Теперь создаем обработчик нажатия на кнопочку "=":

        private void button5_Click(object sender, EventArgs e)

        {

            double x = 0;

            double x1;

            double x2;

            if (!double.TryParse(textBox1.Text, out x1) || !double.TryParse(textBox2.Text, out x2))

            {

                label2.Text = "ERROR";

                return;

            }

            else

            {

                switch (label1.Text[0])

                {

                    case '+':

                        x = x1 + x2; break;

                    case '-':

                        x = x1 - x2; break;

                    case '*':

                        x = x1 * x2; break;

                    case '/':

                        x = x1 / x2; break;

                }

                label2.Text = "= " + x;

            }

        }

Теперь немного комментариев к коду. В обработчике нажатия на кнопочку "+","-","*" или "/" тексту метки, которая у нас отображает выбранное действие, присваивается текст, отображаемый на нажатой кнопке. Для обращения к нажатой кнопке (да и вообще к любому объекту, от которого пришло событие), используем параметр sender.

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

Visual C# для чайников. Урок 14. Пишем программу "Калькулятор".

После этого кнопочки у нас будут подчеркнуты:

Visual C# для чайников. Урок 14. Пишем программу "Калькулятор".

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

В связи с тем, что мы изменили текст кнопок, изменим и обработчики нажатия кнопочку "=":

        private void button5_Click(object sender, EventArgs e)

        {

            double x = 0;

            double x1;

            double x2;

            if (!double.TryParse(textBox1.Text, out x1) || !double.TryParse(textBox2.Text, out x2))

            {

                label2.Text = "ERROR";

                return;

            }

            else

            {

                switch (label1.Text[1])

                {

                    case '+':

                        x = x1 + x2; break;

                    case '-':

                        x = x1 - x2; break;

                    case '*':

                        x = x1 * x2; break;

                    case '/':

                        x = x1 / x2; break;

                }

                label2.Text = "= " + x;

            }

        }

Сделаем еще одно удобство. Меняя операцию, мы так же очищаем результат вычисления, так как он устарел:

        private void button1_Click(object sender, EventArgs e)

        {

            label1.Text = (sender as Button).Text;

            label2.Text = "=";

        }

Так же следует и очистить результат вычисления при изменении чисел. Навесте следующий обработчик на оба поля ввода:

        private void textBox1_TextChanged(object sender, EventArgs e)

        {

            label2.Text = "=";

        }

И последний штрих, обработчик событий формы KeyPress:

        private void Form1_KeyPress(object sender, KeyPressEventArgs e)

        {

            char c = e.KeyChar;

            char sep = Application.CurrentCulture.NumberFormat.CurrencyDecimalSeparator[0];

            switch (c)

            {

                case '+':

                    button1_Click(button1, null); break;

                case 'x':

                case '*':

                    button1_Click(button3, null); break;

                case '-':

                    button1_Click(button2, null); break;

                case '/':

                    button1_Click(button4, null); break;

            }

            e.Handled = !(char.IsDigit(c) || c == sep || c == '-' || c == '\b');

        }

В нем мы исключаем возможность ввести неправильный символ.

Все, теперь программу можно запустить на тестирование:

Visual C# для чайников. Урок 14. Пишем программу "Калькулятор".

Но у этой программы есть небольшой недочетик: нажатие на клавиатуре кнопочки "=" не работает когда мы вводим цифры (другие кнопки работают). Устраним этот недочетик, чуть скорректировав Form1_KeyPress:

        private void Form1_KeyPress(object sender, KeyPressEventArgs e)

        {

            char c = e.KeyChar;

            char sep = Application.CurrentCulture.NumberFormat.CurrencyDecimalSeparator[0];

            switch (c)

            {

                case '+':

                    button1_Click(button1, null); break;

                case 'x':

                case '*':

                    button1_Click(button3, null); break;

                case '-':

                    button1_Click(button2, null); break;

                case '/':

                    button1_Click(button4, null); break;

                case '=':

                    button5_Click(button5, null); break;

            }

            e.Handled = !(char.IsDigit(c) || c == sep || c == '-' || c == '\b');

        }

 


Скриншоты, помеченные знаком *, являются цитатами и иллюстрациями  программного продукта "Microsoft Visual Studio 2010 Professional", авторское право на который принадлежит корпорации Microsoft.. 


 

 

(С) Шуравин Александр

 

Последнее обновление ( 12.02.2014 г. )
 
« След.   Пред. »
 
© 2021 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги