private void dgv_languages_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgv_languages.CurrentRow.Index + 1 == dgv_languages.Rows.Count)
            {
                //Если щёлкнули в последней строке таблицы - переход в режим
                //добавления новой записи -
                id = -1;     //Сброс идентификатора
                ClearForm(); //Очистка формы
                return;      //Выход из обработчика
            }

            //Подгрузка выбранного в таблице языка в форму
            id = Convert.ToInt32(dgv_languages.CurrentRow.Cells[0].Value);

            if (MySettings.Default.ProtocolXmlRpc)
            {
                XMLRPC_Language language = xmlrpc_proxy.ReadLanguage(id);
                tb_ID.Text   = language.ID.ToString();
                tb_Name.Text = language.Name;
            }
            else if (MySettings.Default.ProtocolSoap)
            {
                SOAP_Language language = soap_proxy.ReadLanguage(id);
                tb_ID.Text   = language.ID.ToString();
                tb_Name.Text = language.Name;
            }
            else if (MySettings.Default.ProtocolRest)
            {
                REST_Language language = rest_proxy.ReadLanguage(id);
                tb_ID.Text   = language.ID.ToString();
                tb_Name.Text = language.Name;
            }
        }
        private void btn_Save_Click(object sender, EventArgs e)
        {
            //Сохранение языка
            if (MySettings.Default.ProtocolXmlRpc)
            {
                XMLRPC_Language language = new XMLRPC_Language();
                language.Name = tb_Name.Text;

                if (id < 0)                                //Если идентификатор не задан (сброшен) -
                {
                    xmlrpc_proxy.CreateLanguage(language); //Создание нового языка
                }
                else //иначе (то есть идентификатор задан) -
                {
                    xmlrpc_proxy.UpdateLanguage(id, language); //перезапись существующего языка с заданным идентификатором
                }
            }
            else if (MySettings.Default.ProtocolSoap) //... то же самое для остальных протоколов
            {
                if (id < 0)
                {
                    soap_proxy.CreateLanguage(tb_Name.Text);
                }
                else
                {
                    soap_proxy.UpdateLanguage(id, tb_Name.Text);
                }
            }
            else if (MySettings.Default.ProtocolRest)
            {
                if (id < 0)
                {
                    rest_proxy.CreateLanguage(new REST_Language(tb_Name.Text));
                }
                else
                {
                    rest_proxy.UpdateLanguage(id, new REST_Language(tb_Name.Text));
                }
            }

            if (id >= 0)
            {
                id = -1;  //Сброс идентификатора
            }
            UpdateGrid(); //Обновление таблицы
            ClearForm();  //Очистка формы
        }