• 締切済み

VB2005テキストボックスへのコピペ制御についての質問です。

VB2005テキストボックスへのコピペ制御についての質問です。 フォーム上にテキストボックスを用意し、数値しか入力させず、整数が入力される予定です。 数値のみを入力させることは出来たのですが、コピペを行うと数値でも文字でも貼りつけ出来てしまいます。 これを制限する方法はあるのでしょうか?

  • jobvba
  • お礼率60% (166/274)

みんなの回答

回答No.2

#1さん同様、第一に「NumericUpDown」を推奨いたします。 もっとカスタマイズ性を高めたいのであれば、ユーザコントロールの自作がお勧めです。 サンプルはテキストボックスを継承した、簡単なユーザコントロール作成方法です。 ペーストだけに対応しています。 判定は適当に「数字」というアバウトな条件で行っております。 ※1.クラスの作成[TextNumBox.vb] Public Class TextNumBox   Inherits TextBox   Private Const WM_PASTE As Integer = &H302    '張り付け   Protected Overrides Sub WndProc(ByRef m As Message)     Select Case m.Msg       Case WM_PASTE         Dim l_objData As IDataObject = Clipboard.GetDataObject()         If l_objData.GetDataPresent(DataFormats.Text) Then           Dim l_str文字 As String = CType(l_objData.GetData(DataFormats.Text), String)           If Not 判定_WM_PASTE(l_str文字) Then             m.Result = IntPtr.Zero             Exit Sub           End If         End If     End Select     MyBase.WndProc(m)   End Sub   Private Function 判定_WM_PASTE(ByVal p_strValue As String) As Boolean     '数字構成判定     Return System.Text.RegularExpressions.Regex.IsMatch(p_strValue, "[\d]")   End Function End Class ※2.画面(Form1)にテキストボックスを作成 仮にTextBox1を作成したとします。 ※3.[Form1.Designer.vb]の編集 >Friend WithEvents TextBox1 As System.Windows.Forms.TextBox を Friend WithEvents TextBox1 As TextNumBox へ >Me.TextBox1 = New System.Windows.Forms.TextBox を Me.TextBox1 = New TextNumBox へ

回答No.1

全く気乗りしないなぁ。 NumericUpDownを使えばそれが数値であるか検証する必要がないわけだから。 http://msdn.microsoft.com/en-us/library/system.windows.forms.numericupdown.aspx TextBoxでやるなら、「コピーを制御する」とかそういう考え方じゃなくて Validatingイベントで待ち受けたほうがいいだろう。 http://msdn.microsoft.com/en-us/library/system.windows.forms.control.validating%28v=VS.100%29.aspx 最悪でもTextChangedイベントだ。 http://msdn.microsoft.com/en-us/library/system.windows.forms.control.textchanged%28v=VS.100%29.aspx #NumericUpDownを使うべき、って思っていてこれはそれほど難しくないから、後者用のコードは敢えて書かない

関連するQ&A

  • VB.NETでテキストボックスからデータベースに登録するときの文字制御

    VB.NETでWebページを作っているのですが、 名前を入れるテキストボックスにどうやって制御したらいいか考えています。 「'」や、「,」とかや「\」など、皆様はどのような、文字を制御しているでしょうか? 名前をいれるテキストボックスは、SQL-Serverデータベースに登録するようになっています。 (1)制御する文字 (2)制御方法 を教えてくださいー

  • テキストボックスの入力制限

    VB2005環境です。 ・全角文字のみ入力を受け付けるテキストボックス ・半角文字のみ入力を受け付けるテキストボックス 以上のような入力制限を持つコントロールを用意したいと思っています。 MaskedTextBoxを用いればできるかと思いましたが、それらしき プロパティが見当たりませんでした。 やはりキーイベントを取得して…ということになるのでしょうか?

  • ExcelVBAでテキストボックスに入力制限をする方法

    Excelのプログラムで、フォームのテキストボックスに数値のみ入力許可したり、文字のみ入力許可したり、特定の文字のみ入力許可にするなど、入力制限を行う方法はどのようにすればよいでしょうか? 回答よろしくお願いします。

  • delphiで使うテキストボックス

    delphiでテキストボックスを使用する際、文字数制限があり、一定の文字以上は入力できません。 以前VBでの文字数制限について質問しましたが、そのときにはRichTexBoxでできると聞いたのですが、delphiでのRichTextは制限がありできません。 なにか制限をなくす方法、またはコンポーネント等ありませんか? お願いします。

  • VB.net テキストボックスの入力制限全角のみ

    VB.net初心者です テキストボックスの入力制限で全角文字のみを実現させたいのですが、いろいろ検索して調査してもわかりません。 どなたかアドバイスをいただけると助かります、よろしくお願いします。

  • VBでIE制御

    質問させて頂きます。 VBでWebBrowserを使用してIE制御をやろうと考えているのですが、 type="file"となっているテキストボックスへの入力ができません。 どなたか教えて頂けないでしょうか。 よろしくお願い致します。

  • VBでテキストボックスの文字を・・・

    テキストボックスに入力された文字(数字)を数値として認識させるにはどうすればいいですか?

  • フォームのテキストボックスについて

    今、エクセル2003についているVBで フォームを作ってその中にテキストボックスを入れて その中に入力した文字で検索を行いたいと思っているのですが。 私の持っている教科書にはやり方が載っていません。 こういうときどうしたらいいのでしょうか? また、フォームの機能に詳しいサイトなどがあったら教えてください、お願い致します。

  • ワードで作成したテキストボックス内に入力した文字をコピペ出来るようにし

    ワードで作成したテキストボックス内に入力した文字をコピペ出来るようにしたいのですが、方法を教えてください。office2007を使用しています。

  • テキストボックスの入力抑制

    使用言語はVB.NETです。 フォームAのテキストボックスAに文字を入力し確定すると、 フォームBが起動、フォームBのテキストボックスには、 テキストボックスAで入力した内容が表示されており、それを 変更することはできない。 ただし、テキストボックスAに何も入力せずに起動した場合、 テキストボックスBの内容は書き換え可能、というようなものを 作りたいと思っています。 また、テキストボックスBを入力不可にするには、Enabled=False 以外の方法で行いたいのです。 例えば、テキストボックスAで1と入れた場合、テキストボックスBの 初期表示1をBSで消しても、違う値をいれても、常に1に表示が戻される、 というようなものにしたいのですが…。 上記のようなものを作るには、どのように処理を作っていけば 良いのでしょうか? サンプル的なコードを教えていただけるとありがたいです。 よろしくお願いします。

専門家に質問してみよう