Top.Mail.Ru

MS Visual Studio 2010. Пересчет скорости

Контроль правильности ввода числовых данных в элемент управления TextBox.

Разработать приложение, с помощью которого можно пересчитать скорость, заданную в м/с в км/ч, и наоборот. Приложение должно осуществлять контроль правильности ввода данных.

пересчет скорости

Флажки с зависимой фиксацией (RadioButton)

Такие флажки объединяются в группы, причем в отмеченном состоянии может находиться лишь один флажок из группы. Свойство Checked отвечает за «помечен» «не помечен».

Разработка приложения

Откройте среду Microsoft Visual Studio и создайте новый проект (решение) с именем «Velocity».

Разместите на форме элементы управления, как на рисунке выше.

Задайте элементам управления имена:

lb_out – Label комментария для textBox;

lb_in – Label для вывода результата пересчета;

rb_m_to_k – RadioButton для перевода м/с в км/час;

rb_k_to_m – RadioButton для перевода километров в метры;

Теперь нам необходимо определить переменные, которые мы будем использовать в программе.

ms – для хранения скорости в м/с;

kmh – для хранения скорости в км/ч.

Эти переменные целого типа должны быть видимы во всех методах приложения, поэтому объявим их сразу в начале объявления класса Form1:

  public partial class Form1: Form

    {

        double ms = 0, kmh = 0;

        public Form1()

       

В поле Скорость (textBox1) можно вводить только цифры и запятую (для записи вещественного числа). Надо написать код, который будет проверять, является ли введенный символ допустимым. Если нет, то символ в поле редактирования нельзя отображать.

Данный код нужно написать на событие KeyPress для поля textBox1.

Этот код  используйте в приложениях, где необходимо проверять, является ли введенный символ допустимым.

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

        {

// разрешаем ввести первый минус

if (textBox1.Text.Length == 0) { if (e.KeyChar == '-')return; }

            //если введена точка, то преобразуем ее в запятую

          if (e.KeyChar == '.') e.KeyChar = ',';

           //если длина строки не = 0 и символ  запятая

          if ((textBox1.Text.Length != 0) && (e.KeyChar == ','))

            {

                // сразу после знака "минус" вводить запятую нельзя!

                if ((textBox1.Text.Length == 1) && (textBox1.Text[0] == '-'))

                {

                    e.Handled = true;

                    return;

                }

                else

                {//  если запятая еще ни разу не вводилась, то можно

                    if (textBox1.Text.IndexOf(",") == -1) return;

                }

            }

          

            // если набранный символ цифра, то можем вводить

            if (Char.IsDigit(e.KeyChar)) return;

          

            // можем использовать клавишу BackSpace

            if (e.KeyChar == (char)Keys.Back) return;

          

            // все другие символы вводить запрещено

            e.Handled = true;

           

        }

       

При выборе одного из RadioButton (событие Click) нужно:

  • вывести надпись в метку («Скорость в м/с:» или («Скорость в км/ч:»);
  • очистить свойство Text для метки lbOut (см. exe-файл).

На изменение текста в элементе управления TextBox нужно:

private void textBox1_TextChanged(object sender, EventArgs )

 {

            lb_out.Text = "";  // очистка поля отображения результата

 // если в поле редактирования нет данных, то делаем кнопку ОК недоступной          

if (textBox1.Text.Length == 0) button1.Enabled = false;

 else button1.Enabled = true;   // иначе – делаем кнопку ОК доступной

 }

Напишите код на событие Click для кнопки «Пересчёт»:

  

private void button1_Click(object sender, EventArgs e)

        {

            if (rb_m_to_k.Checked)  // если помечен первый  radioButton

            {

                lb_in.Text = "Скорость в м/с: "; // вывод комментария

                ms = Convert.ToDouble(textBox1.Text); // преобразуем значение из cтроки в вещественное число

                kmh = ms * 3.6;  // переводим м/с в км/час

                lb_out.Text = ms + " м/с это " + kmh + " км/ч";  // выводим на метку результат

            }

            else

                if (rb_k_to_m.Checked)  // если помечен второй radioButton

                {

                lb_in.Text = "Скорость в км/ч: "; 

                kmh = Convert.ToDouble(textBox1.Text); 

                ms = kmh / 3.6;  // переводим км/час в м/с

                lb_out.Text = kmh + " км/ч это " + ms + " м/с";

            }

        }