2017-06-25 7 views
1

DataGridView私はKeyDownイベントでCTRL+Cをキャプチャし、特定のクリップボードテキストを生成しています。DataGridViewのクリップボードにコピーKeyDownがMessageBoxテキストを取得します

この関数は単純で、MessageBoxで完了したアクションを確認します。何らかの理由で

private void ActionCopyToClipboard() 
{ 
    Clipboard.Clear(); 
    Clipboard.SetText("Test"); 

    MessageBox.Show("Copied to clipboard."); 
} 

、この関数の後、クリップボードの内容はむしろClipboard.SetText()で指定した値より

--------------------------- 

    --------------------------- 
    Copied to clipboard. 
    --------------------------- 
    OK 
    --------------------------- 

ボックス - メッセージのテキストが含まれています。私がMessageBoxコールを削除すると、すべて正常に動作します。

なぜMessageBoxコンテンツが取得されるのですか?

答えて

1

手掛かりは私question-

の終わりに自分自身を提示し、私は前にこれを気づいていないと思いますが、Windows MessageBoxは明らかに内部でもKeyUpイベントにCTRL+Cを処理します。

私のKeyDownイベントは、テキストを細かく設定し、MessageBoxを表示していました。 CTRL+Cのリリースでは、KeyUpイベントが生成され、MessageBoxはインターセプトし、自分のテキストを置き換えました。

KeyUpを使用するようにイベントハンドラを切り替えると、問題が解決しました。

関連する問題