Beispiel #1
0
 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;
     }
 }
Beispiel #2
0
 //  *** 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
         }
     }
 }
Beispiel #3
0
        private void ExportGridFast() //Exporta el grid rápidamente a un archivo de excel (experimental)
        {
            // TODO: Ajustar ancho de columnas, eliminar la columna A de excel (está vacía)
            SaveFileDialog sfd = new SaveFileDialog
            {
                Filter        = "Excel (*.xlsx)|*.xlsx",
                FileName      = OutFileNameTextBox.Text + ".xlsx",
                Title         = "Guardar como archivo de excel",
                DefaultExt    = ".xlsx",
                ValidateNames = true
            };

            if (sfd.ShowDialog() == DialogResult.OK)
            {
                XMLDataGridView.SelectAll();
                DataObject dataObj = XMLDataGridView.GetClipboardContent();
                if (dataObj != null)
                {
                    Clipboard.SetDataObject(dataObj);
                }
                Microsoft.Office.Interop.Excel._Application app       = new Microsoft.Office.Interop.Excel.Application();
                Microsoft.Office.Interop.Excel._Workbook    workbook  = app.Workbooks.Add(Type.Missing);
                Microsoft.Office.Interop.Excel._Worksheet   worksheet = null;
                object misValue = System.Reflection.Missing.Value;
                try
                {
                    app.Visible = false;
                    worksheet   = workbook.Sheets[1];
                    worksheet   = workbook.ActiveSheet;
                    List <DataGridViewColumn> listVisible = new List <DataGridViewColumn>();
                    foreach (DataGridViewColumn col in XMLDataGridView.Columns)
                    {
                        if (col.Visible)
                        {
                            listVisible.Add(col);
                        }
                    }
                    for (int i = 0; i < listVisible.Count; i++)
                    {
                        worksheet.Cells[1, i + 2] = listVisible[i].HeaderText;
                        ExportProgressBar.PerformStep();
                    }
                    app.Visible = false;
                    worksheet   = workbook.Sheets[1];
                    worksheet   = workbook.ActiveSheet;
                    Microsoft.Office.Interop.Excel.Range CR = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[2, 1];
                    CR.Select();
                    worksheet.PasteSpecial(CR, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true);
                    worksheet.Columns["A"].Delete();
                    worksheet.Columns.AutoFit();
                    ExportProgressBar.Value = ExportProgressBar.Maximum;
                    MessageBox.Show("El archivo fue exportado con éxito.", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    if (File.Exists(sfd.FileName))
                    {
                        try
                        {
                            File.Delete(sfd.FileName); //Elimina el archivo existente
                        }
                        catch (IOException ex)
                        {
                            MessageBox.Show("No fue posible eliminar el archivo anterior. " + ex.Message);
                            return;
                        }
                    }
                    if (MessageBox.Show("¿Deseas abrir el archivo generado?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        workbook.SaveAs(sfd.FileName);
                        workbook.Saved = true;
                        app.Visible    = true;
                    }
                    else
                    {
                        workbook.SaveAs(sfd.FileName);
                        workbook.Saved = true;
                        workbook.Close(false);
                    }
                }
                catch (Exception e)
                {
                    workbook.Close(false);
                    MessageBox.Show(e.Message);
                }
                XMLDataGridView.ClearSelection();
            }
        }