テキストボックスへの入力でほかのテキストをコピーしたものからの貼り付けが行えないようにしたいと思っているのですがどうしたらよいものでしょうか?
説明足りてますか?
うーーん これでいけるかな?
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 22 Then
' ビープ音を鳴らす
Beep
' 入力された文字をキャンセル
KeyAscii = 0
End If
End Sub
> うーーん これでいけるかな?
いや、それじゃ全然ムリっしょ(藁)
そもそも貼り付けは「Shift + Insert」と「Ctrl + V」、
あとマウスの右クリック時に出るポップアップメニューと
Windowsキーの隣にあるメニューキー(?)でのポップアップメニューから行います。
で、キーボードからの貼り付けは割と簡単にブロック出来るんですが
メニューからの貼り付けを回避するにはサブクラス化をする必要があるそうです。
ちなみに、やったことないんでやり方は分かりません。
> Windowsキーの隣にあるメニューキー
どうやら"アプリケーションキー"というのが正式名称みたいです。
まあ、メニューのマークが書いてあるのに、不思議ですね。
サブクラス化してWM_PASTEを無視する…じゃだめかな?
複雑になりそうですね。
少し条件を加えたいと思います。
実は正確にいうとテキストボックスではなくフレキシブルグリッドなんですが、セルに入力する際改行が含まれている内容をコピーして貼り付けてしまうとグリッドの表示がおかしくなってしまうんです。
ここで貼り付けができなくなれば解決できるなと思ったのですが、ほかに方法があるでしょうか?
考えてみても解決法が浮かびません。
ところで、新規で質問したほうがよいのでしょうか?
クリップボードをクリアするという方法でごまかしですが自己解決することができました。
フレックスグリッドってことはテキストボックスに入力してから、Textをグリッドに入れるんですよね。
じゃあその時に改行コードを消しちゃえば良いんじゃないですか?
MSFlexGrid1.Text = Replace$(Text1.Text, vbCrLf, vbNullString)
ツイート | ![]() |