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 + " м/с";
            }
        }

Добавить комментарий
  • Комментарии не найдены
 
Our website is protected by DMC Firewall!