Skip to content
戻る

C#で2つのキーを使ったショートカットを設定する(CTRL+V)

Published:  at  02:00

概要

C#でWindowsのショートカットキー的なのを設定する。
普通にKeyDownイベントでイベント発生時に押下されているキー情報を取得して目的のキーが押下されているか比較する。
学生時代にキーイベントはかすかにやった記憶があるけど全く覚えてなかったので復習がてらやってみた。

CTRL+Vでペースト的なことをやりたかった。

目次

ソース

private void textBox1_KeyDown(object sender, KeyEventArgs e){
    //押下されているキーを取得
    if (e.KeyCode == Keys.V && e.Control == true)
    //この書き方だと反応しない
    //if (e.KeyCode == (Keys.Control & Keys.V))
    {
        //クリップボードからテキスト取得
        string temp = Clipboard.GetText();
        textBox1.Text = temp;
        Console.WriteLine(temp);
    }
}

キーが押された時点でイベントが発生しCTRL + Vの同時押しでテキストボックスにクリップボードのテキストが格納される。
テキストボックスはReadOnlyプロパティをTRUEにしてやってます。
結果できにはペーストっぽいことができているけど問題点がいろいろ。後述する。

覚書

マイクロソフトさんどーゆーこっちゃ
単品かほかのキーを装飾する意味のコントロールキーかって感じの勝手な解釈?
(そのうちちゃんと調べる。)

問題点

20171122追記
そりゃそうだ、CTRLで装飾されたVだからペーストできるのに何言ってんだ
普通のテキストエディタでもV押した後にCTRL押してもVが入力されるだけってのにあとから気がついた。

反応しない書き方

if (e.KeyCode == (Keys.Control & Keys.V))

この書き方だと反応しなかった。
ネットで調べた感じこんな書き方してる人もいたんだけどなー

参考サイト様

雑感

なんかアイデアはあるんだけど頭の中と手の動きが一致しないので一個ずつつぶしていく作戦に出た。
とりまショートカットキー使ったペーストがやりたかっただけ

PUBGの配信見ながら作業やってたら何も進まなかったね
見るのやめたらすぐできた。



前の記事
C#で文字列のCSVデータをDataGridViewに表示する。
次の記事
SQLの内部結合と外部結合を組み合わせるメモ