Делал в Visual C# 2005. Подскажите пожалуйста:
Не пойму, как сделать, чтобы нельзя было в окна для ввода ввести все символы, кроме запятой и цифр(чисел). Это с массивами можно как то реализовать? И чтобы введенная с клавиатуры точка менялась запятой.
При пустых сообщениях сложить/умножить не выводить ошибки. Поставить фокус справа, чтобы курсор уже стоял на первом числе:
Вот код программы:
http://yadi.sk/d/tT0Dd5dz0pJvG
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class FormCalc : Form
{
public FormCalc()
{
InitializeComponent();
}
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
char c = e.KeyChar;
char sep = Application.CurrentCulture.NumberFormat.CurrencyDecimalSeparator[0];
switch (c)
{
case '+':
btnAdd(btnAdd, null); break;
case 'x':
case '*':
btnAdd(btnAdd, null); break;
case '-':
btnAdd(btnAdd, null); break;
case '/':
btnAdd(btnAdd, null); break;
}
e.Handled = !(char.IsDigit(c) || c == sep || c == '-' || c == '\b');
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnAdd_Click(object sender, EventArgs e)
{
if (txt1.Text == "")
txt1.Text = "";
else
{
float i1, i2, i3;
lblOper.Text = "Сложение";
i1 = Convert.ToSingle(txt1.Text);
i2 = Convert.ToSingle(txt2.Text);
i3 = i1 + i2;
Convert.ToDouble(txt2.Text);
double txtresult = 0;
if (double.TryParse(txt1.Text, out txtresult))
txt1.Text = (txtresult * 10).ToString();
}
}
private void btnReset_Click(object sender, EventArgs e)
{
lblOper.Text = "";
txt1.Text = "";
txt2.Text = "";
txtResult.Text = "";
}
private void btn1_Click(object sender, EventArgs e)
{
if (txt1.Text == "")
txt1.Text = "";
else
{
float i1, i2, i3;
lblOper.Text = "Вычитание";
i1 = Convert.ToSingle(txt1.Text);
i2 = Convert.ToSingle(txt2.Text);
i3 = i1 - i2;
Convert.ToDouble(txt2.Text);
double result = Convert.ToDouble(txt1.Text) + Convert.ToDouble(txt2.Text);
txtResult.Text = Convert.ToString(i3);
}
}
private void btn2_Click(object sender, EventArgs e)
{
if (txt1.Text == "")
txt1.Text = "";
else
{
float i1, i2, i3;
lblOper.Text = "Умножение";
i1 = Convert.ToSingle(txt1.Text);
i2 = Convert.ToSingle(txt2.Text);
i3 = i1 * i2;
double result = Convert.ToDouble(txt1.Text) + Convert.ToDouble(txt2.Text);
txtResult.Text = Convert.ToString(i3);
}
}
private void btn3_Click(object sender, EventArgs e)
{
if (txt1.Text == "")
txt1.Text = "";
else
{
float i1, i2, i3;
lblOper.Text = "Деление";
i1 = Convert.ToSingle(txt1.Text);
i2 = Convert.ToSingle(txt2.Text);
if (i2 == 0)
//lblOper2.Text = "Ошибка! На ноль делить нельзя!";
MessageBox.Show("Ошибка! На ноль делить нельзя!");
else
{
i3 = i1 / i2;
Convert.ToDouble(txt2.Text);
double result = Convert.ToDouble(txt1.Text) + Convert.ToDouble(txt2.Text);
txtResult.Text = Convert.ToString(i3);
}
}
}
private void txtResult_TextChanged(object sender, EventArgs e)
{
}
}
}