在FullRowSelect模式下将datagridview单元格内容复制到剪贴板

Day*_*ker 3 c# datagridview winforms

我有一个winform datagridview来显示客户的详细信息,它有一个上下文菜单.我已将datagridview选择模式设置为"FullRowSelect".我想要的是我想将点击的单元格内容的内容复制到剪贴板.不是整行内容.只是细胞内容.

我在右键单击datagridview并选择行时使用以下代码显示上下文菜单.

private void dgvCusList_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
    {
        if (e.RowIndex != -1 && e.ColumnIndex != -1)
        {
            if (e.Button == MouseButtons.Right)
            {
                DataGridViewCell clickedCell = (sender as DataGridView).Rows[e.RowIndex].Cells[e.ColumnIndex];

                this.dgvCusList.CurrentCell = clickedCell;  

                var relativeMousePosition = dgvCusList.PointToClient(Cursor.Position);

                this.cnxtMnuCusResult.Show(dgvCusList, relativeMousePosition);
            }
        }
    } 
Run Code Online (Sandbox Code Playgroud)

我想在单击上下文菜单中的复制菜单项时将单元格内容复制到剪贴板.请帮我解决这个问题.提前致谢.:)

Jun*_*ith 9

如果您拥有该SelectionMode属性,FullRowSelect则复制功能DataGridView将复制整行.将值更改为CellSelect.设置以下属性以仅复制单元格内容.

dataGridView1.SelectionMode = DataGridViewSelectionMode.CellSelect;
dataGridView1.MultiSelect = false;
Run Code Online (Sandbox Code Playgroud)

如果您想保留FullRowSelect选择模式,请执行以下操作.

 void contextMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
    {
        if (e.ClickedItem.Text == "Copy" && dataGridView1.CurrentCell.Value != null)
        {
            Clipboard.SetDataObject(dataGridView1.CurrentCell.Value.ToString(), false);
        }
    }

 void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right && e.ColumnIndex != -1 && e.RowIndex != -1)
        {
            dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].ContextMenuStrip = contextMenu;
            dataGridView1.CurrentCell = myDGV.Rows[e.RowIndex].Cells[e.ColumnIndex];
        }
    }
Run Code Online (Sandbox Code Playgroud)