2014-01-27 2 views
0

У меня есть Syncfusion GridGroupingControl. Я хотел бы сделать пользовательское действие со столбцом, скажем, пользовательский «скрытый столбец».Определите столбец, щелкнув правой кнопкой мыши на заголовке столбца

Существует способ, чтобы определить имя столбца, когда правой кнопки мыши (отобразить контекстное меню, кстати) на колонны заголовка или клетки?

У меня есть * ContextMenuStrip_Opening *, но он не приносит никакой информации о столбце. Я также * myGrid_TableControlCellClick *, но это одно действие только на клетки, и только на оставил нажмите ...

ответ

0

Ну, думаю, что это

int selected_colum; // "selected_colum " need be a global var 

    private void dtg_contatos_MouseDown(object sender, MouseEventArgs e) 
    { 
     try 
     { 
      if (e.Button == MouseButtons.Right) 
      { 
       dtg_contatos.ClearSelection(); 
       var hti = dtg_contatos.HitTest(e.X, e.Y); 
       dtg_contatos.Columns[hti.ColumnIndex].Selected = true; 
       selected_colum = hti.ColumnIndex; // here you set to global var de colum to use at contextmenustrip click 


       dtg_contatos.Columns[selected_colum].Visible = false; // this you will place at contextmenustrip to hide the column 
      } 
     } 
     catch 
     { 
     } 
    } 
+0

является 'dtg_contatos' GridGroupingControl (http://goo.gl/7yRzjZ)? Поскольку у GGC нет метода ClearSelection' ... – serhio

+0

dtg_contatos - это datagridview –

+0

, так как DataGridView связан с вопросом? – serhio

0

Вы можете обрабатывать событие TableControlMouseDown на GridGroupingControl проверьте правую кнопку мыши, а затем получить ColumnDescriptor от места событий мышей и сохранить имя столбца (и, возможно, HeaderText, чтобы показать в меню):

this.gridGroupingControl1.TableControlMouseDown += gridGroupingControl1_TableControlMouseDown; 

    private string rightClickCol; 

    void gridGroupingControl1_TableControlMouseDown(object sender, Syncfusion.Windows.Forms.Grid.Grouping.GridTableControlMouseEventArgs e) 
    { 
     if (e.Inner.Button == System.Windows.Forms.MouseButtons.Right) 
     { 
      rightClickCol = string.Empty; 

      Syncfusion.Windows.Forms.Grid.Grouping.GridColumnDescriptor columnDescriptor = 
       gridGroupingControl1.TableControl.GetHeaderColumnDescriptorAt(e.Inner.Location); 

      if (columnDescriptor != null) 
       rightClickCol = columnDescriptor.Name; 
     } 
    } 

    private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) 
    { 
     if (!string.IsNullOrEmpty(rightClickCol)) 
     { 
      hideColumnToolStripMenuItem.Text = "Hide " + rightClickCol; 
      hideColumnToolStripMenuItem.Enabled = true; 
     } 
     else 
     { 
      hideColumnToolStripMenuItem.Text = "Hide Column"; 
      hideColumnToolStripMenuItem.Enabled = false; 
     } 
    } 

    private void hideColumnToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     if (!string.IsNullOrEmpty(rightClickCol)) 
      gridGroupingControl1.TableDescriptor.VisibleColumns.Remove(rightClickCol); 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^