VisualStudio コントロールのカスタマイズ「DataGridView」

2013/09/17

コントロールをカスタマイズする方法

概要

当記事では、VisualStudioのコントロールを自分好みにカスタマイズする方法を紹介します。
難しく思うかもしれませんが、普通のクラスと変わりありません。

  1. 変更したいコントロールを継承してクラスを作成。
  2. 変更するメソッドをオーバーライドしてプログラムを追記。
  3. 作成したコンポーネントを使用。

VisualStudioでGUI操作に慣れていると忘れてしまいがちですが、すべてプログラムで作られているためコントロールの変更も普通にできちゃうんです。

コントロールとは?

デザイン作成時に、ツールボックスを使用していると思います。
TextBox、Label、DataGridViewなどです。
このツールボックスに存在しているものを今回ではコントロールと呼んでいます。

これらにあるものは、全てカスタマイズが可能です。

DataGridViewをカスタマイズ

基本的な使い方は下記となります。
DataGridViewの使い方

今回の例では、Enterキーが押されたときに、Tabキーと同じ動作をするようカスタマイズしています。

まず、クラスを追加します。
今回の例では「DataGridViewEx.vb」という名前で保存しています。
クラス追加

追加したクラスのコードを以下のようにします。


Imports System
Imports System.Windows.Forms

''' <summary>
''' Enterキーが押された時に、Tabキーが押されたのと同じ動作をする
''' (現在のセルを隣のセルに移動する)DataGridView
''' </summary>
Public Class DataGridViewEx
    Inherits DataGridView

    <System.Security.Permissions.UIPermission( _
        System.Security.Permissions.SecurityAction.LinkDemand, _
        Window:=System.Security.Permissions.UIPermissionWindow.AllWindows)> _
    Protected Overrides Function ProcessDialogKey(ByVal keyData As Keys) As Boolean
        If (keyData And Keys.KeyCode) = Keys.Enter Then
            Return Me.ProcessTabKey(keyData)
        End If
        Return MyBase.ProcessDialogKey(keyData)
    End Function

    <System.Security.Permissions.SecurityPermission( _
        System.Security.Permissions.SecurityAction.LinkDemand, _
        Flags:=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)> _
    Protected Overrides Function ProcessDataGridViewKey(ByVal e As KeyEventArgs) As Boolean
        If e.KeyCode = Keys.Enter Then
            Return Me.ProcessTabKey(e.KeyCode)
        End If
        Return MyBase.ProcessDataGridViewKey(e)
    End Function
End Class

[ツールボックス]のコンポーネントに、先ほど作ったDataGridViewExが追加されています。
通常のコントロールと同様に使用することができるので、ドラッグして配置してご使用ください。

  • このエントリーをはてなブックマークに追加
Related

FullCalendarでGoogleカレンダーのようなUIを実装

jQueryプラグインFullCalendarのサンプル 概要 FullCalendarを使用して、GoogleカレンダーのようなUIを実装する使用例を...

PHP Laravel5.2でmulti-auth(複数テーブルでの認証)を実装

Laravel5.2でマルチ認証 概要 LaravelとはPHPの中で今最も伸びているフレームワークです。 処理速度が遅いなどありますが、かなり使い安く拡...

PHP 正規表現でIPアドレス形式の文字列か判定

正規表現でIPアドレスの入力チェック 概要 フォームで入力されたIPアドレスが正当な文字列か判定するためのバリデーション処理を実装します。 基本的...

rbenv環境でRuby on Railsのアプリケーションを一瞬で自動生成

アプリケーション構築時に最初に行う手順 概要 アプリケーションを作成するまでの手順を記載しています。 rbenvなどの環境が設定済と仮定して話を進めま...

Rails devise・authority・rolifyで権限付きの認証機能

devise・authority・rolify 概要 3つのGemを使用して、権限付き認証機能を実装します。 gem インストール Gemfile ...

Rails devise で複数モデルの認証機能を実装

Rails devise で複数モデルを管理 概要 rails のログイン認証 Gem「devise」のインストール・設定方法を紹介します。 よく「d...
トップへ戻る