Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2014, 11:59   #1
МаксМСК
 
Регистрация: 26.09.2014
Сообщений: 3
По умолчанию Ввод определенных символов с клавиатуры

есть калькулятор. нужно подключить ввод с клавиатуры цифр, запятых (точка и запятая должны распознаваться одинаково и быть не больше одной в textbox), кнопок операций (+-*/), после нажатия которых очищался бы textbox для ввода второго числа, и вычислять по Enter. плюс ко всему, нужно чтобы ввод производился всегда, а не только когда активен textBox. выручайте
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        bool bClearBox = false;
        decimal a, b, c;
        char znak = '+';
 
        private void button4_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "")
            {
                a = Convert.ToDecimal(textBox1.Text);
                znak = (sender as Button).Text[0];
                textBox1.Tag = textBox1.Text;
                textBox1.Clear();
            }
        }
 
        private void button14_Click(object sender, EventArgs e)
        {
            if (bClearBox)
            {
                bClearBox = false;
                textBox1.Text = "";
                textBox1.Tag = "";
            }
            textBox1.Text += (sender as Button).Text;
        }
 
        private void button20_Click(object sender, EventArgs e)
        {//очищение поля
            textBox1.Text = "";
            textBox1.Tag = "";
        }
        private void button21_Click(object sender, EventArgs e)
        {//плюс-минус
            if (textBox1.Text != "")
                if (textBox1.Text[0] == '-')
                    textBox1.Text = textBox1.Text.Remove(0, 1);
                else textBox1.Text = '-' + textBox1.Text;
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "")
            {
                bClearBox = true;
                double k;
                k = Convert.ToDouble(textBox1.Text);
                textBox1.Text = Convert.ToString(Math.Sqrt(k));
            }
            else
            {
                return;
            }
        }
 
 
        private void button6_Click(object sender, EventArgs e)
        {//кнопка = на форме
            bClearBox = true;
            b = Convert.ToDecimal(textBox1.Text);
            switch (znak)
            {
                case '+': c = a + b;
                    break;
                case '-': c = a - b;
                    break;
                case 'Ч': c = a * b;
                    break;
                case '/': c = a / b;
                    break;
            }
            textBox1.Text = Convert.ToString(c);
        }
 
        private void button8_Click(object sender, EventArgs e)
        {//десятичный разделитель
            int len = textBox1.Text.Length;
            if (textBox1.Text != "")
            {
                for (int i = 0; i < len; i++)
                {
                    if (!textBox1.Text.Any(s => s == ','))
                        textBox1.Text += ",";
 
                }
            }
        }
 
 
 
 
        private void button11_Click(object sender, EventArgs e)
        {//удаление одной цифры
            if (textBox1.Text != "")
                textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length - 1, 1);
        }
 
        private void button22_Click(object sender, EventArgs e)
        {//возведение в квадрат
            if (textBox1.Text != "")
            {
                bClearBox = true;
                double x;
                x = Convert.ToDouble(textBox1.Text) * Convert.ToDouble(textBox1.Text);
                textBox1.Text = Convert.ToString(x);
 
            }
        }
 
        private void button23_Click(object sender, EventArgs e)
        {//процент
            if (textBox1.Text != "")
            {
                b = Convert.ToDecimal(textBox1.Text);
                textBox1.Text = Convert.ToString(a / 100 * b);
            }
        }
 
        Form2 frm2 = new Form2();
        private void справкаToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frm2.ShowDialog();
        }
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
 
        }
    }
}
МаксМСК вне форума Ответить с цитированием
Старый 29.09.2014, 15:36   #2
cerkonst
Пользователь
 
Аватар для cerkonst
 
Регистрация: 18.01.2011
Сообщений: 19
По умолчанию

Так в чем проблема то?
___________________________________ _________
Самые гениальные идеи - самые простые.
Помог с ответом нажми на весы.
cerkonst вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод последовательности кодов символов с клавиатуры Alexey_Suprun Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 12.01.2014 14:23
строки,удалить группу из двух определенных символов glebochek Паскаль, Turbo Pascal, PascalABC.NET 3 08.12.2011 18:26
необходимо настроить ввод русских символов с клавиатуры lekter Помощь студентам 0 07.12.2011 00:53
Как запретить/разрешить ввод от клавиатуры любых символов (в том числе и юникодных)? SkAndrew Общие вопросы Delphi 8 15.08.2008 15:30