DataGridView 的右键菜单(ContextMenuStrip)

    技术2022-05-19  25

    DataGridView, DataGridViewColumn, DataGridViewRow, DataGridViewCell ContextMenuStrip 属性。可以通过设定 ContextMenuStrip 对象来控制 DataGridView 的右键菜单的显示。 DataGridViewColumn ContextMenuStrip 属性设定了 除了列头以外的单元格的右键菜单。 DataGridViewRow ContextMenuStrip 属性设定了除了行头以外的单元格的右键菜单。DataGridViewCell   ContextMenuStrip 属性设定了指定单元格的右键菜单。

     

    [C#]// CellContextMenuStripNeeded事件处理方法private void DataGridView1_CellContextMenuStripNeeded(object sender,    DataGridViewCellContextMenuStripNeededEventArgs e){    DataGridView dgv = (DataGridView)sender;    if (e.RowIndex < 0)    {        // 列头的ContextMenuStrip设定        e.ContextMenuStrip = this.ContextMenuStrip1;    }    else if (e.ColumnIndex < 0)    {        // 行头的ContextMenuStrip设定        e.ContextMenuStrip = this.ContextMenuStrip2;    }    else if (dgv[e.ColumnIndex, e.RowIndex].Value is int)    {        // 如果单元格值是整数时        e.ContextMenuStrip = this.ContextMenuStrip3;    }}

     

     

    // RowContextMenuStripNeeded事件处理方法private void DataGridView1_RowContextMenuStripNeeded(object sender,    DataGridViewRowContextMenuStripNeededEventArgs e){    DataGridView dgv = (DataGridView)sender;    // 当"Column1"列是Bool型且为True时、设定其的ContextMenuStrip    object boolVal = dgv["Column1", e.RowIndex].Value;    Console.WriteLine(boolVal);    if (boolVal is bool && (bool)boolVal)    {        e.ContextMenuStrip = this.ContextMenuStrip1;    }}

     

    CellContextMenuStripNeeded 事件处理方法的参数中、「e.ColumnIndex=-1」表示行头、「e.RowIndex=-1」表示列头。RowContextMenuStripNeeded则不存在「e.RowIndex=-1」的情况


    最新回复(0)