[C#] DataGridView でコピー操作

  • DataGridViewで行選択モード
  • ユーザーがCtrl+Cでコピー処理
  • 目的とする列の値だけを取りたい

デフォルトの設定では、選択した行の値すべてをコピーしてしまう。
DataGridViewに、DataGridViewClipboardCopyMode.Disable に設定した上で、Enterイベントでコピー処理を施す。

private void KeyDownForCopy (object sender, KeyEventArgs e)
{
	// Ctrl+C のみ受付
	if (!(e.KeyData == (Keys.Control | Keys.C)))
		return;

    // 選択行がなければ処理しない
    var dgv = sender as DataGridView;
    if (dgv.SelectedRows.Count == 0)
        return;

    // 取得したい列
    int targetcolumn = 0;
    // 選択行取得
    var value = dgv.SelectedRows[0].Cells[targetcolumn].Value.ToString();
    // クリップボードに設定
    Clipboard.SetText(value);
}
タイトルとURLをコピーしました