private void Menu_ItemClicked(object sender, ToolStripItemClickedEventArgs e) //Obtiene la opción del menú secundario al que se accedió { // TODO: Arreglar bug de click derecho en columnas switch (e.ClickedItem.Name) //Dependiendo el elemento al que se hizo click { case "Del": int mouseOverColumn = XMLDataGridView.HitTest(columnClicked.X, columnClicked.Y).ColumnIndex - 2; //Ïndice de la columna string colToDel = XMLDataGridView.Columns[mouseOverColumn].HeaderText; //Nombre de la columna a eliminar int index = ColumnasCheckedListBox.Items.IndexOf(colToDel); //Índice de la columna ColumnasCheckedListBox.SetItemChecked(index, false); //Desactivar del checkedList //MessageBox.Show(columnClicked.X.ToString() + " " + columnClicked.Y.ToString() + "\n" + Cursor.Position.X + " " + Cursor.Position.Y); //Log-debug XMLDataGridView.Columns[mouseOverColumn].Visible = false; //Oculta columna del grid break; } }
// *** EVENTOS *** \\\ void XMLDG_ColumnHeaderMouseClick(object sender, MouseEventArgs e) //Muestra un menú secundario { if (e.Button == MouseButtons.Right) //Al hacer click derecho { ContextMenuStrip menu = new ContextMenuStrip(); //Menú secundario menu.Items.Add("Ocultar columna").Name = "Del"; //Opciones del menú secundario //Guarda la localización del puntero con respecto al programa 8, 30 es el tamaño del cursor columnClicked.X = Cursor.Position.X - this.Location.X - 8; columnClicked.Y = Cursor.Position.Y - this.Location.Y - 30; int mouseOverColumn = XMLDataGridView.HitTest(columnClicked.X, columnClicked.Y).ColumnIndex - 2; //Índice de la columna que recibió el click //MessageBox.Show(XMLDataGridView.HitTest(columnClicked.X, columnClicked.Y).ToString()); //Pequeño Log-debug if (mouseOverColumn > 0) //Si existe la columna { menu.Show(this, columnClicked); //Muestra el menú secundario menu.ItemClicked += Menu_ItemClicked; //Evento que se ejecuta al hacer click en un elemento del menú secundario } } }