private void vid_view_KeyDown(object sender, KeyEventArgs e)
        {
            //задать количество часов для предмета
            if (e.KeyCode == Keys.Return)
            {
                if (current_lvi == null)
                {
                    return;
                }

                inputbox ib = new inputbox(
                    "Введите в окно редактирования количество часов\n" +
                    "по указанному виду занятия.\n\nЦелая часть числа отделяется от дробной знаком 'запятая' (,).",
                    current_lvi.Text,
                    current_lvi.SubItems[1].Text,
                    "Кол-во часов:");

                ib.is_numeric = true;

                DialogResult res;

                do
                {
                    res = ib.ShowDialog();
                    if (res == DialogResult.Cancel)
                    {
                        break;
                    }
                }while (res != DialogResult.OK);

                if (res == DialogResult.OK)
                {
                    double ch = Convert.ToDouble(ib.textBox1.Text);

                    if (ch <= 200.0 && ch >= 1.00)
                    {
                        current_lvi.SubItems[1].Text = string.Format("{0:F2}", ch);
                    }
                    else
                    {
                        MessageBox.Show("Введенно недопустимое количество часов [допустимое значение: от 1 до 200]",
                                        "Ошибка ввода",
                                        MessageBoxButtons.OK,
                                        MessageBoxIcon.Error);
                    }
                }

                ib.Dispose();
            }

            //удалиить вид занятия из предмета
            if (e.KeyCode == Keys.Delete)
            {
                exclude_button_Click(sender, new EventArgs());
            }
        }
        public void set_chas()
        {
            //поменять количество часов для данного занятия
            int c   = rsp.Col;
            int r   = rsp.Row;
            int num = ids[(r - 1) * N + c - 1];

            DataRow[] gr_row = local_rasp.Select(" id = " + num.ToString());


            if (c == 0 || r == 0)
            {
                return;
            }
            if (rsp[r, c] == null)
            {
                return;
            }

            inputbox ib = new inputbox(
                "Введите в окно редактирования количество часов\n" +
                "по указанному виду занятия.\n\nЦелая часть числа отделяется от дробной знаком 'запятая' (,).",
                gr_row[0][7].ToString(),
                gr_row[0][3].ToString(),
                "Кол-во часов:");

            ib.is_numeric = true;

            DialogResult res;
            double       ch = 0.0;

            do
            {
                res = ib.ShowDialog();
                if (res == DialogResult.Cancel)
                {
                    return;
                }
            }while (res != DialogResult.OK);

            if (res == DialogResult.OK)
            {
                ch = Convert.ToDouble(ib.textBox1.Text);

                if (!(ch <= 200.0 && ch >= 0.0))
                {
                    MessageBox.Show("Введенно недопустимое количество часов [допустимое значение: от 1 до 200]",
                                    "Ошибка ввода",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Error);
                    ib.Dispose();
                    return;
                }
            }

            string     q   = "update rasp set kol_chas = @CHAS where id = @ID";
            SqlCommand cmd = new SqlCommand(q, main.global_connection);

            cmd.Parameters.Add("@CHAS", SqlDbType.Float).Value = ch;
            cmd.Parameters.Add("@ID", SqlDbType.Int).Value     = num;

            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (Exception exx)
            {
                MessageBox.Show("Ошибка при передаче данных. Повторите операцию позднее.",
                                "Ошибка данных",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            changed = true;

            rsp[r, c] = gr_row[0][5].ToString() + "\n" +
                        gr_row[0][4].ToString() + " | " + string.Format("{0:F2}", ch) + " ч.";

            ib.Dispose();
        }