• ベストアンサー

コンボボックスに貼り付け文字を禁止する方法

フォームのコンボボックスに半角英数字以外の入力を禁止したいのです。 ですが、「Ctlr+V」もしくは右クリックの「貼り付け」を行うと全角文字も貼り付け可能です。 コンボボックスのプロパティは以下のようにしています。 Styleプロパティ「0-ドロップダウンコンボ」 IMEModeプロパティ「3-オフ固定」 どなたかご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

.NET? or VB? CHANGEだけでは実現困難です。 例えば、範囲選択されているとき貼り付けを実行されたら、その前の状態を覚えておかなければなりません。 キーボードだけからくるとも限らないので、ウィンドウズイベントのWM_PASTEを認識して、クリップボードの値を判定する必要があります。

nitirich
質問者

お礼

返事が遅くなり申し訳ありませんでした。 クリップボードの値を判定するというのは、私にとっては時間的にも技術的にも難しいような気がします。 ですので、仕様を変更しまして、入力は可能にしようと思います。 GotFocusイベントで指定以外の文字が入力されたか判定を行い、想定以外の場合はメッセージを表示します。 Wendy02様、tak2003様もお手数をお掛けしてしまいましたが、ありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 一応、VB6でやってみました。他にもやり方はあるのかもしれません。これは、一旦は、Combo1 に入ってはいますが、すぐに撥ね付けられています。 Private Sub Combo1_Change()  If LenB(StrConv(Combo1.Text, vbFromUnicode)) <> Len(Combo1.Text) Then   Combo1.Text = vbNullChar   Beep End If End Sub

  • tak2003
  • ベストアンサー率32% (174/540)
回答No.1

focus持った時に全角だったらNullとするロジックを書いておけば良いのでは?

関連するQ&A