テキストボックスの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と関連する良く見られている質問

Q1キーで大文字/小文字を切り替えたい

1キーで大文字/小文字を切り替えたい

現在Windows 7でMicrosoft IMEを使用しています。

ローマ字の大文字と小文字を切り替えるときにはShiftキーとCapslock/英数キーを同時に押すのが標準だと思います。

ただ仕事がら大文字/小文字の切り替えが非常に多く、2つのキーを押すのがひどく面倒に感じられ、この機能を1つのキーに割り当てられることができればどんなにいいだろうと思っています。

たとえばCapslock/英数キーを押すだけで大文字と小文字が切り替わると助かります。

そこで[Microsoft IMEのプロパティ]→[編集操作]→[キー設定]→[変更]を探るのですが、それらしき項目は見当たりません。

Microsoft IMEの設定でなんとかならないでしょうか?あるいは何らかのソフトウェアを導入して解決できないでしょうか?

よろしくお願いします。

Aベストアンサー

英語キーボードを使ってみてください。
英語キーボードですと、CapsLockはシフトを押さず
単独で動作してくれます。

質問者さんが「仮名入力」しかできないならば
英語キーボードはお薦めできませんが、
「ローマ字入力」をすることが可能ならば
英語キーボードの方が楽に打てるはずです。

英語キーボードは2000円くらいから販売されています。

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

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

Aベストアンサー

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

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

Qアルファベットの小文字・大文字切り替えについて

言語バーの「直接入力」にて英字を入力する際に、いつもならシフトキーを押しながら入力することで(通常が小文字なら)大文字になるのですが、いくらシフトキーを押しながら入力しても全く変わらなく(小文字のままに)なってしまいました。

パスワード等は小文字大文字を区別するので困っています。言語バーの「半角入力」でF8やF9を押すことで対応はしていますが、どこに不具合があるか、どなたか教えていただけますでしょうか。

Aベストアンサー

原因と対応を探ってみました。

1. ソフトウェアの問題

1.1. 設定変更
 あまり考えられませんが、何かの設定により Shift キーを無効にしていませんか?
 先ほど、Delete キーを無効にしてしまったという質問を見ましたので、可能性があるかもしれません。

2. ハードウェアの問題

2.1. 物理的な故障
 Shift キーを押し込めない状態になっていませんか。
(1) キーの下に異物が入っているため(大量のゴミなど)キーが十分下がらない。
(2) 飲み物をこぼしたなどの原因で、キーの軸が周囲に張り付いて動かなくなっている。

2.2. 電気的な故障
 Shift キーの接点が、接触不良を起こしている。

原因としては、これらが考えられます。

対応は、以下の方法をお試し下さい。

1.1. 設定変更
 これが原因の場合は、設定を元に戻してください。

2.1. 物理的な故障
 掃除機でゴミを吸い取るか、エアダスターでゴミを吹き飛ばしてみてください。
 次には、キートップを外して(かなり力が要ります)内部が正常に動くか確認してみてください。
 キートップを外すときは、
 キートップリムーバーという道具がありますが入手は手間がかかるので、
 ドライバーの先端を使うか(下記のページの2番目の写真を参考に)、
 http://www.infovaio.net/pcv-s/key/
 針金を輪にしたものを作り、引っ掛けて抜きます。
 (私が先日キーボードを掃除したときのやり方です。下記のページの中段の写真を参考に)
 http://park16.wakwak.com/~ex4/kb/news0202.htm
 ゴミが残っている場合は、取り除いてください。

 ここで、軸がきちんと上下するかも確認してください。

 動かない場合は(2)の問題で、洗浄処理が必要です。

2.2. 電気的な故障
 これまでの対応が当てはまらない場合は、電気的な故障と考えられます。
 この場合は、キーボードの分解・修理が必要です。

自分で直せない場合は、(ノートの場合は)修理に出す、
(デスクトップの場合は)買い替えることを検討してください。
また、Shift キーは普通は左右に一つずつあるので、片方が使えるなら多少の不便は我慢して、使い続けることもありかもしれません。

原因と対応を探ってみました。

1. ソフトウェアの問題

1.1. 設定変更
 あまり考えられませんが、何かの設定により Shift キーを無効にしていませんか?
 先ほど、Delete キーを無効にしてしまったという質問を見ましたので、可能性があるかもしれません。

2. ハードウェアの問題

2.1. 物理的な故障
 Shift キーを押し込めない状態になっていませんか。
(1) キーの下に異物が入っているため(大量のゴミなど)キーが十分下がらない。
(2) 飲み物をこぼしたなどの原因で、キーの軸が周囲に張り...続きを読む

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を併用してもこの処理ルーチンを通ってしまいます

Q大文字と小文字が混ざったパスワードの入力の仕方

大文字と小文字が混ざったパスワードの入力の仕方

大文字と小文字が混ざったパスワードを入力する場合。
「SHIFT」+「CAPS LOCK」ボタンを押して切り替えていますが、
●●●表示しか出ず、入力した文字が大文字か小文字の確認出来ず、
困っています。何か良い裏技が有れば教えて下さい。

使用OS:VISTA HP SP-2
使用ブラウザ:IE-8

Aベストアンサー

>「SHIFT」+「CAPS LOCK」ボタンを押して切り替えていますが、
普通の使い方は小文字モードで入力し、大文字のときだけShuftを押しながら英文字を押します。
大文字が大幅に多い場合はシフトロック(Shuft+Caps)して操作を逆転します。
IEでのパスワード入力では他のエリアへタイプしてそれをカット&ペーストする方法も有効です。
右クリックでペースト出来ない場合でもCtrl+vでペーストできると思います。

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ベストアンサー

Caps Lock キーの状態を確認しましょう。
ランプが点灯していると大文字を入力する状態になっています。ランプが消灯していれば小文字入力状態です。

これは大文字と小文字の入力を切り替えるキーです。キーボードの一番左の縦一列の中にあります。
ほとんどのキーボードには Caps Lock が on になると該当するランプが点灯するようになっています。
スタンダードなキーボードでは、キーボード上の右上に「Number Lock」「Caps Lock」「Scroll Lock」の順でランプが並んでいますから
これらのランプの状態を確認しましょう。

さて多くのキーボードでは、Caps Lock キーを押しただけでは大文字と小文字の切替はできません。
Shift キーを押しながら Caps Lock キーを押すとこの切替ができることが多いようです。

また、Shift キーを押しながら 英数字を入力すると、大文字と小文字を一時的に切り替える事ができます。


メモ帳などで動作の確認と入力の練習をしてみてください。

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

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

Aベストアンサー

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

Q拡張子はなぜ、大文字と小文字のものがある?

WindowsXPを使っています。
拡張子を表示させる設定にすると、
大文字のものと小文字のものがあることに気がつきました。
ほとんど小文字なんですが、たとえば.WMVは大文字です。
なぜ、大文字と小文字のものがあるのでしょうか?

Aベストアンサー

マイクロソフトのMS-DOSやWindowsでは、大文字小文字の区別がありません。
大文字で表示しても、小文字で表示しても同じファイルと認識されます。

UNIXでは大文字小文字が区別され、別のファイルと認識されます。
これで、ファイル名のつけ方が大幅に増えることになります。
試しに、何倍になるか計算してみてください。

注意して欲しいのは、インターネットのサーバーではUNIXが使われていること。
Windowsの世界では、大文字小文字の区別がなく、インターネットの世界では大文字小文字の区別があることです。

windowsでは正常にリンクされていたものがサーバーにアップロードするとリンクエラーになってしまうことがよくあります。

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ランキング