VB.net初心者ですよろしくお願いします

テキストボックス入力制限で全角文字のみを以下の方法で実現させました

(1)テキストボックス選択時のImeMode初期値を全角ひらがなに設定
(2)ボタン押下時のイベントで入力された文字のサイズを確認し、半角が混ざっていたらエラー

これで基本的には問題ないのですが、後学のために入力文字自体を全角のみに制限できないかを調べています

いろいろ調査してみて半角のみは可能であることがわかり、実際にコーディングもしてみました
しかし全角のみは調査しても情報が見つかりません

全角のみの入力制限が可能かどうか、理由も添えてアドバイスいただけると助かります

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

参考にしてください。



Public Shared Function Fint_GetLenB(ByVal vstr_String As String) As Integer

Return System.Text.Encoding.GetEncoding("Shift_JIS").GetByteCount(vstr_String)

End Function

Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating

Dim s As String = TextBox1.Text
If Fint_GetLenB(s) <> s.Length * 2 Then
MsgBox("半角が含まれています")
e.Cancel = True
End If

End Sub
    • good
    • 1

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q英文ファイルをコピペすると、「"」が全角になるのはなぜ?

前から気になっていたのですが、興味でおたずねします。英文など海外の「半
角英数のみ」文化のサイトやファイルを見ていると、

(1) 半角「"」が日本語環境で全角「“」になったり
(2) 半角「'」が日本語環境で全角「’」になったり

していることがありませんか(または、文字化けしたり)。

例えば、今みた英文のPDF(英文WORDで作成し、AcrobatでPDF化したものと思
われる)も、コピーして日本語のテキストエディタに貼り付けたところ、上記
(1)(2)のように全角化されています。PDF上では半角で表示されているのです
けど。

「\⇔バックスラッシュ」の関係ように(←ちょっと例が違いますけど)
シングルクォーテーションとダブルクォーテーションに
特別な意味を持たせたりされているのでしょうか。
英語OSに、Unicode等でない限り「全角」なる概念は存在しないように思える
のですが。

Aベストアンサー

もう一度見直したら、この原稿の「"」

半角「" "」(上が●)ではなく
多分全角の「” ”」(下が●)になっていますね。

こんな、Quotation Markを欧州で使っているのかも知れませんね、よく分かりませんが。。そのせいで、全角と認識されるのかも。。。

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

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

Aベストアンサー

強制的にIMEをONにする(VBAでの処理例ですが)
http://officetanaka.net/excel/vba/tips/tips16.htm

それでもIMEを意図的に切ったり、半角に変換は可能なので
入力確定した文字を確認し、半角が入力されている場合再度入力状態へ戻すなどの処理が必要ですね

Q入力モードがすぐに半角になる、全角固定は?

Internet ExplorerでYahooの検索枠やサイト枠に記入する時、入力モードを「ひらがな全角」で行うのですが、サイト枠などが変わると「半角英数字」 に代わってしまいます。
その様なものでしょうか、何か設定が変わってしまったのかと思っています。
入力モードを「ひらがな全角」にしておくことはできませんか。
Windows7です。
よろしくお願いします。

Aベストアンサー

特定のサイトでそうなることがあります。

その時IEの「ツール」の「互換表示設定」でそのサイトを登録してみてください。直ることがあります。

QVB.net テキストボックス半角文字入力不可制限

VB.net初心者です
とある登録画面において、テキストボックスに半角文字、半角記号、半角スペースが含まれた状態で登録ボタンを押下された場合、入力エラーとする判定を実現させようとしています。

その場合の判定条件をどうすればよいのか調べてもわかりません
どなたかアドバイスをいただけると助かります、よろしくお願いします。

Aベストアンサー

先頭文字から一文字ずつ取り出し文字コードから半角か全角かをチェックする

Q「半角/全角 漢字」キー押したら、“あ”にならず“A”になる

半角/全角キーを押して、かな入力に切り替えていました。

画面右下のAがあになりません。全角Aと半角Aです。

カタカナひらがなキー+Altキーでその場はひらがな入力になりますが、すぐにAAになります。元の設定に戻すにはどのようにしたら良いでしょうか?

Aベストアンサー

「ツール」ボタンから「プロパティ」を開いて、「全般」の「初期入力モード」を確認してください。

QVB.NET2003 テキストボックスに半角英数字以外入力させない

お世話になります。

初めてコーディングを行っておりますが、
文字制御についてわからないのでご享受ください。

IMEの設定 Alphaになっているテキストボックスがあります。

こちらに、直接入力や、貼り付けなどで、
全角文字、半角カナが入力されないようにするにはどうしたらよろしいでしょうか?

よろしくお願いします。

Aベストアンサー

ImeModeはOffの方がいいように思います

キー入力に関しては
TextBoxのKeyDownイベントで
if e.KeyCode = Keys.ProcessKey then
  e.Handled = true
  TextBox1.ImeMode = ImeMode.Off
else if e.Keycode = Key.Insert then
  ' キーボードによる貼り付け操作
  if e.shift then
    e.Handled = true
  end if
End if
といった具合で処理出来そうです

マウスの右クリックのコンテキストメニューの対策は
ContextMenuをFormに貼り付けてメニュー項目は何も設定しません
Form_Loadイベントなどで
TextBox1.ContextMenu = ContextMenu1
といった具合に設定します …

Q半角カタカナがVBAだと全角カタカナになる

フォームを作って「フォーム1」にしてその上に「テキスト1」を置きました。(どちらも半角です)

Private Sub Form_Open(Cancel As Integer)
Form_フォーム1.テキスト1.Value = "a"
End Sub
にすると自動でフォームがフォームのように全角になります。

なのでこの状態でフォームを開こうとすると、
Form_フォーム1の部分でコンパイルエラーになります。
(変数が定義されてません)

Private Sub Form_Open(Cancel As Integer)
Me.テキスト1.Value = "a"
End Sub
にするとうまく行きました。

でもテキスト1は、半角のままです。

フォームだけが全角になってしまいます。これは何と言う現象でしょうか?
なるべくオブジェクト名には半角を使わない方がいいのですか?

・・・と今質問分を書いて見直したら、gooでも半角を全角に自動修正するんですね。

Aベストアンサー

当方の場合、オブジェクト名に半角カタカナを使用したケースは皆無です。
なんとなくですがエラーの種になりそうな・・・。
Access2010ですが少し試してみました。
フォーム名を半角カタカナで『カタカナ』にした場合

1・Form_カタカナ
2・Forms!カタカナ
3・forms("カタカナ")
3の場合のみ半角カタカナのままで、1・2は全角カタカナに置き換えられてしまいます。
どうしても半角カタカナのフォーム名にしたいのなら、3の方法かと思います。
(お勧めしているわけではありません)
なお、オブジェクト名中にアンダーバーを使用する場合があるので
1のフォーム指定方法は使ったことが有りません。

なぜ置き換えられてしまうのか?はよく分かりませんが
アスキーコードの128からはコードページによって変わりますので
その辺が関係してくるのかな???と思います。(文字化け対策?)
日本語の場合
http://yellow.ribbon.to/~netnetnet/VB/memo/VB_ascii_128-255.html
ヨーローッパ語圏?
http://msdn.microsoft.com/ja-jp/library/cc392379.aspx

当方の場合、オブジェクト名に半角カタカナを使用したケースは皆無です。
なんとなくですがエラーの種になりそうな・・・。
Access2010ですが少し試してみました。
フォーム名を半角カタカナで『カタカナ』にした場合

1・Form_カタカナ
2・Forms!カタカナ
3・forms("カタカナ")
3の場合のみ半角カタカナのままで、1・2は全角カタカナに置き換えられてしまいます。
どうしても半角カタカナのフォーム名にしたいのなら、3の方法かと思います。
(お勧めしているわけではありません)
なお、オブジェクト名中...続きを読む

Qテキストボックス行の桁数を制限したいです VB.NET

VB.NETのテキストボックスなのですが、
マルチラインのテキストボックスで
行の桁数を10桁などに制限したいです。

全角半角混在などの処理もしないとならないと思うのですが、
良い方法などありましたらアドバイス頂ければ幸いです。
よろしくお願い致します。

Aベストアンサー

TextChanged等のイベントハンドラで
・改行コード(vbCrLf等)を数えて、9になったらそれ以上改行できなくする。
・文字列が貼り付けされた場合で、改行コードが10個以上有り、それ以降も文字列が続く場合は10個目以降の文字列を取り除く…等々
の処理を行えばよいと思います。
あ、右端での自動折り返しを設定していた場合(改行コード無しで改行される場合)は、上記方法ではNGですね…。


代案。
.NETならTextBoxに行数を取得できるプロパティがあったかもしれない(Linesだったかな?)。これが実行数を数えているなら利用できるかと思います。こちらのプロパティも結局改行コードの数を返すのなら上記と同じ問題が発生します。手元にVBが無いので、ちょっとそこは試してみてください。

VB6ではなにかAPIを利用したように記憶しております。
.NETでも最終手段はそれになるかもしれません。

QwmpでCDを取り込むと曲名が全角表示になるのですが。。

これを半角することはできますか^^;
日本語は仕方ないですがアルファベットまで全角になってしまいます。
XPでWMP11を使っています。

Aベストアンサー

CD情報データベースがそうなっているのなら、情報を更新しない限り駄目ですね。

QVB6(SP5)とVB.NET のテキストボックス等の配列について

VB6(SP5)で、プログラミングをしております。
現在、VB.NETを勉強中です。
1つ疑問が出てきました。Text1等のインデックス
プロパティが無い様なのですが、配列のテキストボッ
クスやラベルは無いのでしょうか?
宜しくお願い致します。

Aベストアンサー

コントロール配列は、.NET Frameworkではサポートされません。

ただし、ないわけではないです。コントロール配列を使ったVB6製アプリをコンバートすると特殊なコンポーネントで置き換えられますので。
ただし、これからのことを考えるといまさら使わないのが賢明です。


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

人気Q&Aランキング

おすすめ情報