如何在datagrid上创建上下文菜单并在winform中复制该值

时间:2014-08-19 06:18:09

标签: c# asp.net winforms datagrid

我已经看到很多解决方案,但我没有得到正确答案。所有答案都令人困惑。

contextMenu.MenuItems.Add(new MenuItem("Update", CopyClick));
DataGridViewCell ActiveCell = null;

private void CopyClick(object sender, EventArgs e)
{
   if (ActiveCell != null && ActiveCell.Value != null)
       Clipboard.SetText(ActiveCell.Value.ToString());

}

目前我正在使用上面的代码,它会复制当前单元格值,但我想要 - 如果我选择任何行并按复制然后it will copy only first value from the row

所以我该怎么做?

2 个答案:

答案 0 :(得分:2)

我希望这会有所帮助。

var str = YourDataGridView.Rows[ActiveCell.RowIndex].Cells[0].Value.ToString();
Clipboard.SetText(str);

答案 1 :(得分:1)

使用此代码段复制数据网格视图中选定行的第一项:

int ActiveRow = null;
private void Form1_Load(object sender, EventArgs e)
{
    this.dataGridView1.RowHeaderMouseClick += new DataGridViewCellMouseEventHandler(dataGridView1_RowHeaderMouseClick);
}

void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
    ActiveRow = e.RowIndex;
    if (e.Button == System.Windows.Forms.MouseButtons.Right)
    {
        contextMenuStrip1.Show();
        contextMenuStrip1.Items[0].Click += new EventHandler(Copy_Click);
    }
}

void Copy_Click(object sender, EventArgs e)
{
    if(ActiveRow!=null)
        Clipboard.SetText(dataGridView1.Rows[ActiveRow].Cells[0].ToString());
}