4.既存のコントロールを継承した独自のコントロールを作成する方法(14_Ctr_04) |
1.TextBox を継承した[郵便番号入力専用]の TextBox コントロールの作成方法 2. 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86 Option :[Compare Text] [Explicit On] [Infer On] [Strict On] Imports :追加なし 参照設定:追加なし その他 : : このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので) 必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい) |
1. |
1.VB2013 を使用して、[PostalNoTextBox]という名前の[クラスライブラリ] プロジェクトを新規作成します。 2.デフォルトで Class1.vb が作成されますので、Class1.vb ファイルの名前を[PostalNoTextBox.vb](任意でOK)に変更します。 3.変更すれば、[ファイルの名前を変更しようとしています。このプロジェクトのコード要素'Class1'への参照を すべて変更しますか?]との確認のダイアログが表示されますので、[はい(Y)]をクリックすると 必要箇所のすべてのファイル名が変更されます。 4.[プロジェクト]→[参照の追加]→[アセンブリ]→[フレームワーク]で System.Windows.Forms を参照追加してください。 5.下記にならってテスト用のコードを書き込み、[ビルド]→[PostalNoTextBox のビルド]を実行してください。 '必要なものを Imports しておく事 Imports System.Windows.Forms Public Class PostalNoTextBox Inherits TextBox '継承元となるコントロールを指定の事 '----------- オリジナルの動作を設定する部分(なにも書かなければ元の TextBox と同じ)--------------- 'イベントを処理するデリゲートを定義 Public Delegate Sub CheckInputHandler(ByVal sender As Object, ByVal e As EventArgs) '不正な書式で入力された場合発生するイベントを定義 Public Event CheckInput As CheckInputHandler '不正な書式があった時に発生するカスタムイベントを作成 Public Sub cmTextBox_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Validating Dim m As System.Text.RegularExpressions.Match = _ System.Text.RegularExpressions.Regex.Match(Me.Text, "^\d{3}-\d{4}$") '郵便番号 ' "^\d{2,6}[\-]?\d{0,4}[\-]?\d{4}$" '電話番号 ' "^[\w\.\-]+@[\w\-]+\.[\w\.\-]+$" 'メールアドレス ' "^(0|([1-9](\d{0,2})((,\d{3}){0,2})))$" '3桁区切り If m.Success = False Then 'イベントを発生 RaiseEvent CheckInput(Me, New EventArgs) End If End Sub '-------------------------------------------------------------------------------------------------------- End Class 6.ビルドすると Debug フォルダー内に PostalNoTextBox.dll が作成されますので、それを参照設定して使用します。 7.通常の TextBox コントロールと同様に Form に貼り付けたい場面で、ツールボックスを右クリックして、 [アイテムの選択]→[.NET Framework コンポーネント]→[参照]→保存したフォルダー内の PostalNoTextBox.dll を 開き、追加設定して下さい。 8.追加するとツールボックスの下部の方に PostalNoTextBox コントロールが追加されていますので、それを選択して Form 上に配置して下さい。 9.配置したら、PostalNoTextBox1_CheckInput というイベントが作成されているのでそこに下記コードを書いて 入力テストをしてみて下さい。 Private Sub PostalNoTextBox1_CheckInput(sender As Object, e As EventArgs) Handles PostalNoTextBox1.CheckInput '作成したイベント(不正な書式があった時に発生するイベント) MessageBox.Show("郵便番号の書式が不正です。") PostalNoTextBox1.Focus() End Sub おことわり 上記は、郵便番号入力用の TextBox のを作成するのが目的ではありませんので誤解なきように願います。 5.簡単なユーザーコントロールの作成方法 もほぼ同様の方法で作成しておりますので参考にして下さい。 又、MSDN の方に下記のようなサンプルが記載されていますので作成方法等も含め参考にして下さい。 Visual Basic .NET または Visual Basic 2005 を使用して RichTextBox コントロールの内容を印刷する方法 (リンクが切れている場合はタイトルで検索して調べて下さい) |
2. |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |