private void UpdateControls()
        {
            WatchingScheme ws = lbSchemes.SelectedItem as WatchingScheme;

            btnRemove.Enabled = ws != null;
            btnRename.Enabled = ws != null;
            btnUpdate.Enabled = ws != null;
        }
        private void lbSchemes_SelectedIndexChanged(object sender, EventArgs e)
        {
            UpdateControls();
            WatchingScheme ws = lbSchemes.SelectedItem as WatchingScheme;

            if (ws != null)
            {
                UpdateDataTables(ws);
            }
        }
        private void UpdateDataTables(WatchingScheme ws)
        {
            foreach (DataRow dr in dtWards.Rows)
            {
                int id = (int)dr["Id"];
                dr["Checked"] = ws.HasWard(id);
            }
            foreach (DataRow dr in dtPatients.Rows)
            {
//				int id = (int)dr["Id"];
                int wardId = (int)dr["WardId"];
                dr["Checked"] = ws.HasWard(wardId);
            }
        }
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            WatchingScheme ws = lbSchemes.SelectedItem as WatchingScheme;

            if (ws != null)
            {
                if (UpdateWatchingScheme(ws))
                {
                    using (GmConnection conn = App.CreateConnection())
                    {
                        ws.Save(conn);
                    }
                }
            }
        }
        bool UpdateWatchingScheme(WatchingScheme ws)
        {
            bool changed = false;

            foreach (DataRow dr in dtWards.Rows)
            {
                int  id          = (int)dr["Id"];
                bool wardChecked = (bool)dr["Checked"];
                if (ws.UpdateWard(id, wardChecked))
                {
                    changed = true;
                }
            }
            return(changed);
        }
        private void btnRemove_Click(object sender, EventArgs e)
        {
            WatchingScheme ws = lbSchemes.SelectedItem as WatchingScheme;

            if (ws != null)
            {
                if (FormUtils.Ask("Удалить схему '" + ws.name + "'?"))
                {
                    using (GmConnection conn = App.CreateConnection())
                    {
                        WatchingScheme.Remove(conn, ws.Id);
                    }
                    lbSchemes.Items.Remove(ws);
                }
            }
        }
        private void btnAdd_Click(object sender, EventArgs e)
        {
            TextForm tf = new TextForm(false);

            tf.Text = "Имя схемы";
            if (tf.ShowDialog() == DialogResult.OK)
            {
                WatchingScheme ws = new WatchingScheme(watching.userId);
                ws.name = tf.TextValue;
                UpdateWatchingScheme(ws);
                using (GmConnection conn = App.CreateConnection())
                {
                    ws.Save(conn);
                }
                lbSchemes.Items.Add(ws);
                lbSchemes.SelectedItem = ws;
            }
        }
        private void btnRename_Click(object sender, EventArgs e)
        {
            WatchingScheme ws = lbSchemes.SelectedItem as WatchingScheme;

            if (ws != null)
            {
                TextForm tf = new TextForm(false);
                tf.Text      = "Имя схемы";
                tf.TextValue = ws.Name;
                if (tf.ShowDialog() == DialogResult.OK)
                {
                    ws.name = tf.TextValue;
                    using (GmConnection conn = App.CreateConnection())
                    {
                        ws.Save(conn);
                    }
                    lbSchemes.Items[lbSchemes.SelectedIndex] = ws;
                }
            }
        }