/// <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); } }