2014-01-27 20 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

你可以在GridGroupingControl處理TableControlMouseDown事件,檢查鼠標右鍵,然後從鼠標事件的位置得到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); 
    }