テキストボックスのKeyPressイベントで

テキストボックスに大文字を入れたいのですが、

入力の時に、shift+CapsLock(英数)ってすると、大文字がいれれるとおもうのですが、それを初期設定で制限することはできないのでしょうか?

 

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

A 回答 (3件)

テキストボックスに英小文字または英小文字混じりのストリングを入力しても、大文字にしてしまうのは下記で出来ました。


これを使えないでしょうか。ついでにエクセルでの関数は
A1のセルに小文字があるとして、B1のセルに大文字で統一
するのは「=UPPER(”A1”)」ですね。
-----------------------
Private Sub Form_Click()
' Form1.Print UCase(Text1.Text) ’テストのためやってみたもの
Text1.Text = UCase(Text1.Text)
End Sub
    • good
    • 0

テキストボックスに大文字しか受け付けないような属性にしてしまう方法もあります。



これで行うと、コピペで入力された半角小文字英数も大文字に変更をOS側で変換を行ってくれます。

詳細は参考URLを見てください。

参考URL:http://www.vbvbvb.com/jp/gtips/0751/gSetWindowLo …
    • good
    • 0

お疲れ様です。



どのようなことを行いたいのかはよくわかりませんが
APIでCaps Lockを強制的にOnにすることは出来ると思います。

以下の例は、フォームが起動する時に現在のCaps Lockの
値を見てOff状態なら強制的にOnにしています。

これに似たものを GotFocus イベントに入れると初期設定
のように見えるのではないでしょうか?


Option Explicit

'// API
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal BScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long

Private Const VK_CAPITAL = &H14
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const KEYEVENTF_KEYUP = &H2

Private Sub Form_Load()

  Dim keys(0 To 255) As Byte

  '// Get KeyboardState
  GetKeyboardState keys(0)

  '// Caps Lock の状態を判断
  If Not CBool(keys(VK_CAPITAL)) Then

    '// Caps Lock が点灯していない
    '// Caps Key を押したことにする
    keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0

    '// Caps Key を離したことにする
    keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0

  Else

    '// Caps Lock が点灯している
    '// 何もしない

  End If

End Sub

間違っていたらごめんなさい。
    • good
    • 0

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

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

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

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

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

Qリッチテキストボックスとテキストボックスの違い

VB6のリッチテキストボックスとテキストボックス
の違いは何なんでしょうか?

Aベストアンサー

RichTextだと扱えるファイルサイズが大きくなり
プロパティの指定が可能になります。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformsrichtextboxclasstopic.asp

Qテキストボックスのキーイベントについて

VS2005を使用して勉強中の初心者です。
今、勉強を兼ねて実験的に作成しているアプリにおいて
「TextBox1にフォーカスがある時
エンターキーを押すことでメッセージボックス"TEST"を表示させる」
ということをさせようと考えています。
以下のようなイベントプロシージャによって、
一応目的の動きをさせることはできましたが
この時、エンターキー押下による改行を入力させずに
メッセージボックス表示のみを実行させるには
どのように書き直すべきなのでしょうか。
よろしくお願い致します。

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
If e.KeyCode = Keys.Enter Then
MsgBox("TEST")
End If
End Sub

Aベストアンサー

KeyPressイベントも処理しないといけないようですよ

Private Sub TextBox1_KeyPress(引数省略)
  if e.KeyChar = Chr(13) then
    e.Handler = True
  end if
End Sub

KeyDownイベントの中で条件が成立した場合に e.Handled を Trueにしましょう

if e.KeyCode = Keys.Enter then
  e.Handled = True
  MsgBox( "TEST" )
end if
といった具合です

KeyDownイベントでキーの判断をする場合
単にEnterだけが押された場合とShiftやCtrlなどと一緒に押された場合を考慮したほうがいいでしょう
現在の状態ですと CtrlやShiftを併用してもこの処理ルーチンを通ってしまいます

Qvb2005 で複数のテキストボックスのイベントについて

vb2005で
タブの中に、複数のテキストボックスが存在しています。(15個程)
その中の指定した10個のみ、フォーカスを外したときにイベントを
発生させるよい方法はありますでしょうか。
一つのテキストボックスは下記で行えるのですが、複数の場合よい方法はありますでしょうか。

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

~~処理~~

End Sub

Aベストアンサー

指定した10個のうち、何個フォーカスが外れているかを(フォーカスイベントで)カウントしておいて、別個の関数でカウントが10の時、行いたい処理を実行するようにしておいて、各テキストボックスのフォーカスイベントでその関数を呼び出すようにすれば良いのでは?

Qテキストボックスで数値入力制限

数値しか入力できないようにしているテキストボックスがあります。が、どこを見てもそんな処理は入ってないように見えるんです。
マスクではなくテキストボックスでです。
キープレスでもゴットフォーカスにもそんなロジックはありませんでした。
プロパティには存在しないと思っています。
ソースがあるのにどこに書いてるかわからないというバカぶりですが、どなたかアドバイスお願いします。

Aベストアンサー

Win32APIのSetWindowLong(GetWindowLongも併用)でウィンドウスタイルを変更することで、数字入力専用のテキストボックスに変更できるそうです。
GetWindowLongで得たウィンドウスタイルにES_NUMBER(&H2000)を付加して、SetWindowLongを利用してウィンドウスタイルを変更する方法です。
このコードがどこかで使用されていませんか?

Qテキストボックスの数値入力制限

テキストボックスによる数値入力の制限で困っています。
LEDの点灯とモーターの動作のチェックプログラムを作り
完成したのですが、いろいろとネットで調べ
下記のプログラムでテキストボックスの数値入力を作成したのですが、

作成プログラム
Dim bKeyNum As Boolean = Char.IsDigit(e.KeyChar)
If bKeyNum <> True Then
e.Handled = True
End If

この方法ではBack Spaceキーが効かないため上司から使いづらいので
キーが効くようにしてほしいと要望があり、
もう一度探しましたが、どれも記述どおりにやっても
うまく動きません。
何か私に分かりやすく説明をしてくれて簡単に数値入力と
Back Spaceキーが使えるプログラムを教えてください。
よろしくお願いします。

Aベストアンサー

BackSpaceが動いたら、今度は左右キーやDeleteキーも・・・という要求が出そうですね。
なので、下記のように 数字とコントロール文字以外は Handled = True となる式を作ればよいと思います。

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
e.Handled = Not (Char.IsDigit(e.KeyChar) OrElse Char.IsControl(e.KeyChar))
End Sub


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

人気Q&Aランキング

おすすめ情報