Ejemplo n.º 1
0
        /// <summary>
        /// Меню при щелчке правой клавишей на DGV
        /// </summary>
        /// <param name="dgv">
        /// Тот DGV, где нужно показать менюшку
        /// </param>
        /// <param name="rowIndex">
        /// Индекс строки
        /// </param>
        /// <param name="columnIndex">
        /// Индекс столбца
        /// </param>
        /// <param name="mode">
        /// Тип DGV
        /// </param>
        public static void MenuPanel(DataGridView dgv, int rowIndex, int columnIndex, Type mode, Loading sender = null)
        {
            try
            {
                ContextMenuStrip cm = new ContextMenuStrip();

                if (rowIndex != -1 && mode == typeof(SatelliteList))
                {
                    ToolStripMenuItem[] ToolStripMenuItem1 = { new ToolStripMenuItem("&Удалить"), new ToolStripMenuItem("&Переименовать"), new ToolStripMenuItem("&Скопировать текст") };

                    cm.Items.Add(ToolStripMenuItem1[0]);
                    cm.Items.Add(ToolStripMenuItem1[1]);
                    cm.Items.Add(ToolStripMenuItem1[2]);

                    dgv.ContextMenuStrip         = cm;
                    ToolStripMenuItem1[0].Click += (s1, eArg) =>
                    {
                        dgv.CurrentCell = dgv[columnIndex, rowIndex];
                        string n = dgv.Rows[rowIndex].Cells["НаименованиеИСЗ"].Value.ToString();
                        dgv.Rows.RemoveAt(rowIndex);
                        dataBase.ToDisplay("SatelliteList", onlyAdapter: true);
                        dataBase.sqlAdapter.Update(dataBase.dataset.Tables["SatelliteList"]);
                        dataBase.ToUpdate(Profile.userLogin, "Удалил запись о спутнике \"" + n + "\"");
                    };
                    ToolStripMenuItem1[1].Click += (s1, eArg) =>
                    {
                        dgv.CurrentCell = dgv[columnIndex, rowIndex];
                        string log = MessageBoxTi.Show("Переименование спутника", "Введите новое название спутника", HorizontalAlignment.Left);
                        if (log == "" || log == null)
                        {
                            return;
                        }
                        while (dataBase.dataset.Tables["SatelliteList"].Rows.Cast <DataRow>().Where(x => x["НаименованиеИСЗ"].Equals(log)).Count() != 0)
                        {
                            log = MessageBoxTi.Show("Переименование спутника", "Такой спутник уже есть. Введите другое название спутника!", HorizontalAlignment.Left);
                            if (log == "" || log == null)
                            {
                                return;
                            }
                        }

                        if (log != "" || log == null)
                        {
                            dataBase.ToUpdate(Profile.userLogin, "Переименовал спутник " + dgv.SelectedRows[0].Cells["НаименованиеИСЗ"].Value.ToString() + " в " + log);
                            dataBase.SimpleRequest("UPDATE Loading SET Спутник = '" + log + "' WHERE Спутник = '" + dgv.SelectedRows[0].Cells["НаименованиеИСЗ"].Value.ToString() + "' UPDATE SatelliteList SET [НаименованиеИСЗ] = '" + log + "' WHERE ID = '" + dgv.SelectedRows[0].Cells["ID"].Value.ToString() + "'" + " UPDATE SSALoading SET [Спутник] = '" + log + "' WHERE [Спутник] = '" + dgv.SelectedRows[0].Cells["НаименованиеИСЗ"].Value.ToString() + "'");
                            dataBase.dataset.Tables["SatelliteList"].Clear();
                            dataBase.ToDisplay("SatelliteList", onlyAdapter: true);
                            dataBase.sqlAdapter.Fill(dataBase.dataset.Tables["SatelliteList"]);
                        }
                    };
                    ToolStripMenuItem1[2].Click += (s1, eArg) =>
                    {
                        string per = dgv[columnIndex, rowIndex].Value.ToString();
                        if (per != "")
                        {
                            Clipboard.SetText(per);
                        }
                    };
                    dgv.ContextMenuStrip.Show(dgv, new Point(Cursor.Position.X - dgv.PointToScreen(new Point(0, 0)).X, Cursor.Position.Y - dgv.PointToScreen(new Point(0, 0)).Y));
                }
                else if (rowIndex != -1 && mode == typeof(Loading))
                {
                    ToolStripMenuItem[] ToolStripMenuItem1 = { new ToolStripMenuItem("&Скопировать текст"), new ToolStripMenuItem("&Добавить новое значение"), new ToolStripMenuItem("&Удалить строку") };

                    cm.Items.Add(ToolStripMenuItem1[0]);
                    cm.Items.Add(ToolStripMenuItem1[1]);
                    cm.Items.Add(ToolStripMenuItem1[2]);

                    dgv.ContextMenuStrip = cm;

                    ToolStripMenuItem1[0].Click += (s1, eArg) =>
                    {
                        string per = dgv[columnIndex, rowIndex].Value.ToString();
                        if (per != "")
                        {
                            Clipboard.SetText(per);
                        }
                    };

                    ToolStripMenuItem1[1].Click += (s1, eArg) =>
                    {
                        if (MessageBoxTi.Show(textAlign: HorizontalAlignment.Center))
                        {
                            string newVal = MessageBoxTi.Show("Новое значение", "Введите новое значение", textAlign: HorizontalAlignment.Center);
                            if (newVal == null || newVal == "")
                            {
                                return;
                            }
                            else
                            {
                                dataBase.dataset.Tables["Loading " + sender.keys].Select().Where(x => x["ID"].Equals(dgv["ID", rowIndex].Value)).FirstOrDefault()[dgv.Columns[columnIndex].Name] = newVal;
                                dataBase.sqlAdapter.Update(dataBase.dataset.Tables["Loading " + sender.keys]);
                                sender.FillBottomControls();
                                sender.AddFreeSpase(sender.mainPanel);
                                sender.UpdateBottomControls(sender, new EventArgs());
                                dgv.CurrentCell = dgv[columnIndex, rowIndex];
                            }
                        }
                    };

                    ToolStripMenuItem1[2].Click += (s1, eArg) =>
                    {
                        if (MessageBoxTi.Show("Удаление излучения", "Удалить данное излучение?") == MessageResult.Yes)
                        {
                            DataRow dr = dataBase.dataset.Tables["Loading " + sender.keys].Select().Where(x => x["ID"].Equals(dgv["ID", rowIndex].Value)).FirstOrDefault();

                            dataBase.SimpleRequest("INSERT INTO [dbo].[Deleted] ([Спутник],[Диапазон],[Поляризация],[Частота],[Состояние]," +
                                                   "[ОтношениеСШ],[ВидДоступа],[Модуляция],[Тактовая],[RПУК],[ПУК],[СкрембВнеш],[ПУККаскад],[СкрембВнутр]," +
                                                   "[Скорость],[СистемаСвязи],[Оборудование],[ДлинаКадра],[ТипДанных],[СтекПрот],[Примечание],[СостояниеАн],[Ценность]," +
                                                   "[Наблюдение],[ВремяДоб],[Пользователь],[Загруженность], [ВремяРедакт]) VALUES ('" + dr["Спутник"] + "', '" + dr["Диапазон"] + "', '" + dr["Поляризация"] + "', '" +
                                                   dr["Частота"] + "', '" + dr["Состояние"] + "', '" + dr["ОтношениеСШ"] + "', '" + dr["ВидДоступа"] + "', '" + dr["Модуляция"] + "', '" +
                                                   dr["Тактовая"].ToString().Replace(',', '.') + "', '" + dr["RПУК"] + "', '" + dr["ПУК"] + "', '" + dr["СкрембВнеш"] + "', '" +
                                                   dr["ПУККаскад"] + "', '" + dr["СкрембВнутр"] + "', '" + dr["Скорость"].ToString().Replace(',', '.') + "', '" + dr["СистемаСвязи"] + "', '" + dr["Оборудование"] + "', '" +
                                                   dr["ДлинаКадра"] + "', '" + dr["ТипДанных"] + "', '" + dr["СтекПрот"] + "', '" + dr["Примечание"] + "', '" + dr["СостояниеАн"] + "', '" +
                                                   dr["Ценность"] + "', '" + dr["Наблюдение"] + "', GETDATE(), '" + dr["Пользователь"] + "', '" + dr["Загруженность"] + "', '" + dr["ВремяРедакт"] + "')");

                            dataBase.ToUpdate(Profile.userLogin, "Удалил излучение спутника " + '"' + dr["Спутник"].ToString() + '"' + " с частотой: \"" + dr["Частота"].ToString() + "\". (запись перенесена в таблицу \"Удалённые\")");

                            dr.Delete();
                            dataBase.sqlAdapter.Update(dataBase.dataset.Tables["Loading " + sender.keys]);
                            sender.checkSum = dataBase.CheckSum("Loading " + sender.keys);
                        }
                    };

                    dgv.ContextMenuStrip.Show(dgv, new Point(Cursor.Position.X - dgv.PointToScreen(new Point(0, 0)).X, Cursor.Position.Y - dgv.PointToScreen(new Point(0, 0)).Y));
                }
                else if (rowIndex != -1 && mode == typeof(SSALoading))
                {
                }
                else
                {
                    ToolStripMenuItem columns = new ToolStripMenuItem("&Столбцы");
                    columns.DropDown.AutoClose   = false;
                    columns.DropDown.MouseLeave += (s, e) => columns.DropDown.Close();

                    columns.DropDown.MouseLeave += (s, e) =>
                    {
                        columns.DropDown.Close();
                    };
                    ToolStripMenuItem[] ToolStripMenuItem2 = { new ToolStripMenuItem("&Свойства"), new ToolStripMenuItem("&Скрыть"), columns };
                    foreach (DataGridViewColumn col in dgv.Columns)
                    {
                        if (col.Name == "Частота")
                        {
                            continue;
                        }
                        columns.DropDownItems.Add("&" + col.Name);
                    }
                    foreach (ToolStripMenuItem it in columns.DropDownItems)
                    {
                        it.Click += (s, args) =>
                        {
                            if ((s as ToolStripMenuItem).Checked == true)
                            {
                                (s as ToolStripMenuItem).Checked = false;
                                dgv.Columns[(s as ToolStripMenuItem).Text.Replace("&", string.Empty)].Visible = false;
                                dataBase.SimpleRequest("INSERT INTO [MainSettings] ([Who], [What], [Content]) VALUES ('LoadingColumnsVisibility' , '" + Profile.userLogin + "', '" + (s as ToolStripMenuItem).Text.Replace("&", string.Empty) + "')");
                            }
                            else
                            {
                                (s as ToolStripMenuItem).Checked = true;
                                dgv.Columns[(s as ToolStripMenuItem).Text.Replace("&", string.Empty)].Visible = true;
                                dataBase.SimpleRequest("DELETE FROM [MainSettings] WHERE [Who] = 'LoadingColumnsVisibility' AND [What] = '" + Profile.userLogin + "' AND [Content] = '" + (s as ToolStripMenuItem).Text.Replace("&", string.Empty) + "'");
                            }
                        };
                        if (dgv.Columns[it.Text.Replace("&", string.Empty)].Visible == true)
                        {
                            it.Checked = true;
                        }
                    }

                    cm.Items.Add(ToolStripMenuItem2[0]);
                    cm.Items.Add(ToolStripMenuItem2[1]);
                    cm.Items.Add(ToolStripMenuItem2[2]);
                    ToolStripMenuItem2[1].Click += (s, e) =>
                    {
                        if (dgv.Columns[columnIndex].Name != "Частота")
                        {
                            dgv.Columns[columnIndex].Visible = false;
                            if (mode == typeof(Loading))
                            {
                                dataBase.SimpleRequest("INSERT INTO [MainSettings] ([Who], [What], [Content]) VALUES ('LoadingColumnsVisibility' , '" + Profile.userLogin + "', '" + dgv.Columns[columnIndex].Name + "')");
                            }
                        }
                    };

                    dgv.ContextMenuStrip = cm;
                    dgv.ContextMenuStrip.Show(dgv, new Point(Cursor.Position.X - dgv.PointToScreen(new Point(0, 0)).X, Cursor.Position.Y - dgv.PointToScreen(new Point(0, 0)).Y));
                }
            }
            catch (Exception e)
            {
                MessageBoxTi.Show("MenuPanel " + e.Message);
            }
        }