- ベストアンサー
textboxユーザーコントロールのコピー&ペースト制御
VB.NETにてテキストボックスタイプのユーザーコントロールを作成中なのですが、 任意の場所からコピーしてきた文字列をテキストボックスにペーストする際、コピーした文字列のチェック行い、 入力制限したい文字が存在する場合、ペーストさせないような処理にしたいのですが、 良い方法は無いでしょうか? よろしくお願いします。
- みんなの回答 (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 などで調べるとすぐ見つかります。
その他の回答 (1)
- JeanneNet
- ベストアンサー率48% (100/208)
こんにちは、じゃんぬねっと です。 TextBox を継承した自作の TextBox にて、 WndProc をオーバーライドし、WM_PASTE を捕捉します。 その時に、Clipboard から Text を取得し、 貼り付けたくない文字を排除した状態で自前でペーストすれば OK です。 これならば、コンテキスト メニューからの貼り付け、 [Ctrl] + [Insert], [Ctrl] + [P] すべて防げます。 # 作ったことがあります。
補足
じゃんぬねっとさん回答ありがとうございます。 もしよろしければ、具体的にどのような記述をすればいいか教えていただけないでしょうか?