| 日時: 2013/02/18 15:02名前: VBレスキュー(花ちゃん)
 
************************************************************************************ カテゴリー:[テキストボックス][][]                                              *
 * キーワード:TextBox,コピー,貼り付け,切り取り,元に戻す,                        *
 ***********************************************************************************
 '----------------------------------------------------------------------------------
 SampleNo:045
 投 稿 日:2013/02/18
 投 稿 者:VBレスキュー(花ちゃん)
 動作確認:Windows Vista / Windows 7 / VB2010 Pro SP1Rel / Framework 4.0 SP1Rel で
 [Option Compare Text][Option Explicit On][Option Infer On][Option Strict On]で確認
 '========1=========2=========3=========4=========5=========6=========7=========8===
 
 テキストボックスで、数値しか入力できないように制限する(簡易型)
 テキストボックスで、入力された文字列のチェック
 
 Application.AddMessageFilter メソッド を使って、貼り付け等のメッセージを処理
 できないかと思い、チョット試してみたのですが、IMessageFilter でフィルタリングできる
 メッセージは限定的で、貼り付け等のメッセージは取得できないようです。
 どうしてもと言うなら、SampleNo:139 のサンプルのような TextBox を継承したカスタム
 コントロールを作成して、メッセージを処理する方法をご使用ください。
 
 私的には、ノートパソコンを使っていて、数字でも貼り付けて入力する場面が結構多いので
 貼り付け防止は、ありがた迷惑かと。
 '----------------------------------------------------------------------------------
 
 Imports System.Text.RegularExpressions
 
 Public Class Form1
 
 '貼り付け等には未対応
 Private Sub TextBox1_KeyPress(sender As Object, _
 e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
 '(.-1234567890[Enter][BackSpace])しか入力できないように制限する(お好みで)
 If e.KeyChar >= Chr(Keys.Space) And e.KeyChar < "-"c Or _
 e.KeyChar > "9"c Or e.KeyChar = "/"c Then
 Microsoft.VisualBasic.Beep()    'エラー音
 e.Handled = True                '入力キーを無効にする
 End If
 End Sub
 
 
 Private Sub TextBox1_Leave(sender As Object, _
 e As System.EventArgs) Handles TextBox1.Leave
 '入力された文字のチェック
 
 If Not IsNumeric(TextBox1.Text) Then
 ' 12,3.9- のようなものでも許可されてしまうので、注意(使用されない方が好ましい)
 MessageBox.Show("IsNumeric = 数値以外が含まれています")
 End If
 
 
 '細かく指定したいなら正規表現の方が便利かと。
 If Not Regex.IsMatch(TextBox1.Text, "^-?[0-9\.]+$", RegexOptions.IgnoreCase) Then
 MessageBox.Show("数値以外が、含まれています")
 '  TextBox1.Focus()
 End If
 
 End Sub
 
 End Class
 
 
 |