tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
テキストボックスで数値しか入力できないように制限する(簡易型)(VB.NET) ( No.20 )  [親スレッドへ]
日時: 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



 [スレッド一覧へ] [親スレッドへ]