- 日時: 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
|