スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

UserControlでカーソルキーを押した時のKeyDownイベント

.NET FrameworkでUserControlクラスを継承した独自コントロールを作成した場合に、そのままではカーソルキー(矢印キー)を押してもKeyDownイベントが発生しません。

UserControlクラスの親クラスであるContainerControlクラスの内部でカーソルキーの押下処理が行われてしまい、イベントが発生しなくなっています。
この問題を解決するには独自コントロールのクラスでIsInputKeyメソッドを下記のようにオーバーライドすればKeyDownイベントが発生するようになります。これで、FormのKeyPreviewプロパティをtrueにするとForm側のKeyDownイベントも発生してくれます。

protected override bool IsInputKey(Keys keyData)
{
    if (keyData == Keys.Right || keyData == Keys.Left ||
        keyData == Keys.Up || keyData == Keys.Down)
    {
        return true;
    }

    return base.IsInputKey(keyData);
}

基底クラスでもあるContainerControlクラスで勝手にカーソルキーを処理して欲しくないですよね。


参考ページ

スポンサーサイト
カレンダー
<<  2010年11月  >>
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 - - - -

プルダウン 降順 昇順 年別


ブログ内検索
日々の生活にhappyをプラスする|ハピタス



最近の記事
最近のトラックバック
月別アーカイブ
カテゴリー
ブロとも申請フォーム

この人とブロともになる

RSSフィード




上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。