ごみばこ

プログラムに関する備忘録などを書いています。

カスタムコントロールを作ってみよう! その1

投稿をサボっていました。。。

今回は簡単なコントロールの作成です。


.NETのコンポーネントには予め便利なものばかりですが、
少し手を加えたコントロールが作りたい場合もあります。
そういう時にカスタムコントロールの作成が役立ちます。

今回作成するものは、数値のみが入力できるテキストボックス。
使用する開発環境はWindows10, Visual Studio2015です。

まずはソリューションエクスプローラーのプロジェクト名を右クリック。
「追加」から「コンポーネント」を選択します。

名前はExTextBoxにしました。以下がコード。
良い書き方ではないと思いますが…。

Public Class ExTextBox
    Inherits TextBox

    Protected Overrides Sub OnKeyPress(e As KeyPressEventArgs)

        Select Case e.KeyChar
            Case "0"c To "9"c
                e.Handled = False

            Case ChrW(Keys.Back)
                e.Handled = False

            Case ChrW(Keys.Escape)
                Me.Clear()
                e.Handled = False

            Case Else
                ' KeyPressイベントを処理済とする。
                e.Handled = True

        End Select

        MyBase.OnKeyPress(e)

    End Sub

End Class

Case文で押されたキーに対して処理を分けています。
エスケープで文字を全て削除するというおまけもつけてみました。
今回はOnPaintを使用しないので、消してしまっても大丈夫です。

デフォルトでe.HandledはFalseなので書かなくてもいいとは思いますが、
わかりやすいかなと思ったので書いています。

おそらくInheritsを書くときにエラーが出ると思いますが、
デザイナーファイルの継承を同じものに書き換えてあげれば解消されます。

今回はここまで。