3

Windows フォームで、いくつかの行と列を持つ単純な DataGridView コントロールを作成し、SelectionMode プロパティを FullRowSelect に設定すると、クリップボードのコピー機能で奇妙な動作が発生します。

行が選択され、ユーザーが ctrl-c を押すと、予想どおり、行全体がセル間に \t 文字を含むクリップボードにコピーされます。

ユーザーが単一のセルをダブルクリックして編集し、そのセル内でユーザーがテキストの一部を選択してctrl-cを押すと、選択したテキストの一部ではなく、行全体がコピーされます!

回避策として、キーダウン イベントでクリップボードのコピーを実行しようとしましたが、編集コントロールが編集モードの場合、イベントは発生しません。

助言がありますか?

4

1 に答える 1

7

回避策として:

編集時にクリップボードのコピーを無効にする

  private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
    {
        this.dataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMode.Disable;
    }

    private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        this.dataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText;
    }
于 2012-08-01T08:57:30.993 に答える