「みんな教えて! 選手権!!」開催のお知らせ

VB.NETにてテキストボックスタイプのユーザーコントロールを作成中なのですが、
任意の場所からコピーしてきた文字列をテキストボックスにペーストする際、コピーした文字列のチェック行い、
入力制限したい文字が存在する場合、ペーストさせないような処理にしたいのですが、
良い方法は無いでしょうか?
よろしくお願いします。

A 回答 (2件)

こんにちは、じゃんぬねっと です。


全部解説するのは骨が折れますので、

Public Class ExTextBox
  Inherits System.Windows.Forms.Form

  Protected Overrides Sub WndProc(ByRef m As Message)
    Const WM_PASTE As Integer = &H302

    Select Case m.Msg
      Case WM_PASTE    
        '/ ここでクリップボードを読む
        '/ ここで許可しない文字を削除した文字列を作る
        '/ ここで貼り付ける
    End Select

    MyBase.WndProc(m)
  End Sub

End Class

クリップボード関連は Google などで調べるとすぐ見つかります。
    • good
    • 2

こんにちは、じゃんぬねっと です。



TextBox を継承した自作の TextBox にて、
WndProc をオーバーライドし、WM_PASTE を捕捉します。
その時に、Clipboard から Text を取得し、
貼り付けたくない文字を排除した状態で自前でペーストすれば OK です。

これならば、コンテキスト メニューからの貼り付け、
[Ctrl] + [Insert], [Ctrl] + [P] すべて防げます。

# 作ったことがあります。

この回答への補足

じゃんぬねっとさん回答ありがとうございます。
もしよろしければ、具体的にどのような記述をすればいいか教えていただけないでしょうか?

補足日時:2005/08/31 17:59
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A