• ベストアンサー

【VB】or【C#】テキストボックスの動作

テキストボックス内に何か文字がある場合、Upキー、Downキーでカーソルが移動してしまいますが、この動作を無効にする方法はないでしょうか? Rightキー、Leftキーでの動作は有効にしたままで

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

  • ベストアンサー
  • hotosys
  • ベストアンサー率67% (97/143)
回答No.3

vb2005(たぶん2008も)なら Private Sub TextBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown If (e.KeyCode = Keys.Up) Or (e.KeyCode = Keys.Down) Then e.Handled = True End If End Sub または Private Sub TextBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown e.Handled = (e.KeyCode = Keys.Up) Or (e.KeyCode = Keys.Down) End Sub などではどうでしょうか? 複数のテキストボックスの場合は Private Sub TextBox_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown, TextBox2.KeyDown, TextBox3.KeyDown e.Handled = (e.KeyCode = Keys.Up) Or (e.KeyCode = Keys.Down) End Sub もできます。 すごく沢山なら・・・前もって、 Private Sub myKeyUpDownCancel(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) e.Handled = (e.KeyCode = Keys.Up) Or (e.KeyCode = Keys.Down) End Sub とかいうのを用意して、 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load AddHandler TextBox1.KeyDown, AddressOf myKeyUpDownCancel AddHandler TextBox2.KeyDown, AddressOf myKeyUpDownCancel AddHandler TextBox3.KeyDown, AddressOf myKeyUpDownCancel End Sub や Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load For Each ctrl As Control In Me.Controls If TypeOf ctrl Is TextBox Then AddHandler ctrl.KeyDown, AddressOf myKeyUpDownCancel End If Next End Sub などで、自作のキー処理に飛ばすとかはどうでしょうか?

sineminna
質問者

お礼

完璧です。 一つ賢くなりました。本当にありがとうございました。

その他の回答 (2)

  • kenpon24
  • ベストアンサー率64% (66/102)
回答No.2

ごめんなさい。 今手持ちの環境ではvbaしか試せなくてキーコードにvbKeyUpとか書いてしまいました。 If KeyCode = vbKeyUp Or KeyCode = vbKeyDown Then を If KeyCode = Keys.Up Or KeyCode = Keys.Down Then にすれば動くかもしれません。 考え方はキー押下時に、押されたキーのコードを判定し、 上または下なら0にするっていう考え方です。 ヘルプでKeysを検索して調べてみて下さい。

sineminna
質問者

お礼

そのコードで試したのです。 ご回答いただきありがとうございました。

  • kenpon24
  • ベストアンサー率64% (66/102)
回答No.1

vbだったらテキストボックスのKeyDownイベントを取って、こんな感じでいけるんじゃないですか? (間違いがあったらすいません) Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyUp Or KeyCode = vbKeyDown Then KeyCode = 0 End If End Sub

sineminna
質問者

補足

駄目みたいです。 ifのあとのkeycode指定でエラーが出ました。

関連するQ&A

  • テキストボックスについて

    使っている環境はVB6.0です。 テキストボックスが2つあり、1つ目のテキストボックスでEnterキーを押すとテキストボックスの2つ目にフォーカスが移動するというものなのですが、その移動したときに2つ目のテキストボックスの文字が選択されている状況を作りたいのですが何か良い方法はないでしょうか? 文字は最初から入っている前提でお願いします。

  • Word2003のテキストボックス間の移動について

    よろしくお願いいたします。 現在WindowsXP/Word2003 で書類を作成しています。 その中で、テキストボックスを数箇所使用しているのですが、ボックス内の文章を編集しているとき(枠外が斜め線になり、中でカーソルが点滅している状態)、矢印キーでテキストボックス内の文字・行を移動しようとすると、何故か他のテキストボックスに移動してしまいます。これでは文章のちょっとした訂正を行おうとするたび、マウスで移動しなくてはならなくなり大変な時間のロスです。 この設定(?)を解除する方法はありますでしょうか?朝までに書類を作成しなくてはならないので大変困っています。 例) ・テキストボックスA(縦書き)・テキストボックスB(横書き)のふたつがある。 ・テキストボックスB内の文章を編集中、たとえば「あいうえお」の「お」の後ろ部分にカーソルがあり、1文字カーソルをずらそうと左矢印を押したらテキストボックスAにカーソルが移動してしまう。 ・テキストボックスA内ではカーソルによる文字・行間移動は可能。

  • テキストボックスの文字を右揃えにしましたらカーソルが

    こんぱんは。テキストボックスの文字を右揃えにしましたらカーソルが点滅しなくなりました。具体的には、 <input type='text' class='itiniti' maxlength='5' /> このようにしたものに、 .itiniti{width:50px; text-align:right; } で指定したのですが、右揃えにはなりましたが、そのテキストボックスをクリックしてもカーソルが出現しません。何か入力して、右端以外の文字をクリックしたらカーソルが出現しますが、→キーでカーソルを一番右側までもっていくとまた消えます。 text-alignがleftのときとcenterのときは正常に表示されています。 どなたか右揃えでカーソルがちゃんと表示されない理由がわかるかたいらっしゃいましたらアドバイスお願いいたします。 環境は、IE7です。

    • ベストアンサー
    • HTML
  • C# テキストボックスについて

    フォームに置いたテキストボックスに フォーカスを入れると カーソルが点滅するごとに,オーバーライドした OnPaintのハンドラーにイベントが引っかかります。これは当然のことなのでしょうか? カーソルが点滅したぐらいでPaint処理をするのはわずらわしいし不都合がある場合があります。 なので,イベントが引っかからない(起きない)ようにするか,または OnPaintハンドラー内において Paintイベントが起きたのはテキストボックスであるということを知る方法はないのでしょうか。

  • テキストボックスに文字挿入したい

    テキストボックスがあり、そこに文字が並んでいて、ある場所にカーソルがあるとします。そのカーソルの場所にボタンクリックで文字を挿入というのはできるものでしょうか。 テキストボックスにカーソルがある状態でボタンにカーソルを移動するとそもそも無理なのかと思ったため、質問されていただきました。 (例) テキストボックス:東京|都に行った 「|」はカーソルのつもり。 ボタンをクリックすると「|」の次に「ほげほげ」という文字が入るようなことができるでしょうか。

  • テキストボックス内でのカーソルの動きが逆に・・・

    Excel2007でテキストボックスを使ってコメントを付けていますが、文字を訂正する時に訂正箇所にマウスを持ってきてクリックしてからカーソルを表示させますが、その時、そのカーソルを右へ移動させたい場合、矢印キー(→)を押すと何故だかカーソルが左へ移動します。左へ移動させたい場合も矢印キー(←)を押すと右へ動いてしまいます。どこかの設定を触ってしまったのかもしれませんが、その設定箇所が分かりません。 どなたかお分かりの方がおられましたらよろしくお願いいたします。 セル内でのカーソル移動は問題なく左右キーとカーソルは同じ方向に動きます。  また、ここで作成したファイルをExcel2003で開いて同じことをやっても逆にならず正常に動きます。 初歩的な質問だと思いますが困ってます。 よろしくお願いいたします。

  • テキストボックスの入力について

    こんにちは。 過去の質問も調べてみたのですが、同じようなニュアンスの質問が見つけられませんでしたので改めて質問させてください。 以前から気になっていたことです。 ネットショッピングのAMAZONのHPなどでよく起こる現象なのですが、 テキストボックスに検索したい単語を日本語で入力し、単語を確定させようとENTERキーを押すと何故かその入力した文字が消えてしまいます。再度入力しENTERキーを押すとやはり消えてしまいます。 テキストボックスの外(どこでも)をマウスで一度クリックしてカーソルを消し、改めてテキストボックスにカーソルを表示させて文字入力をすると入力ができるようになります。 これで解決はできるのですが、毎回毎回この作業をするのは非常に煩わしいです。 しかも入力できなくなるのはPCを起動させて最初にそのHPにアクセスした時だけなのです。 わかりづらい文章で申し訳ございませんが、原因と解決方法をご教授いただければと思います。 動作環境はXPでIEはバージョン6です。 お願いいたします。

  • エクセル2007アンロックテキストボックス不調

    エクセル2007でシートを保護した状態で、ロックを外したテキストボックスの編集が不調です。 テキストボックスのロックを外してあれば、シートを保護しても、テキストボックスの内容は編集可能のはずですが、うまくいきません。  ★すなわち、改行のためにエンターキーを打っても改行されず、カーソルがテキストボックスから抜けて、ロックされていないセルに移動してします。矢印キーを打った場合もテキストボックス中でカーソルは移動せず、テキストボックスから抜けて、ロックされていないセルに移動してしまいます。2010の試用版を使ってみましたが、同様の現象が起きました。 大変困っています。対策あるいは修正ファイルなどご存知の方は教えてください。

  • Access テキストボックス内の制御について

    テキストボックス内に郵便番号を入力すると、次のテキストボックスに 該当住所を表示させるようにしています。 その後、郵便番号の入力ボックスからTABキーにてカーソルを移動すると、 住所をすべて選択した状態でカーソルが移ってしまうので、 そのまま番地の入力をしようとすると、せっかくの住所がすべて消えてしまいます。 セレクトしないようにする(住所の右端にカーソルが点滅している状態)には、 プロパティで、なにかを直さないといけないと思うのですが、わかりません。 どなたかおしえてください。

  • Wordでテキストボックスの選択ができません!

    Word2007を使用しています。 ちなみにUSBメモリーに保存して2003で使用しても同じでした。 「挿入」→「テキストボックス」でテキストボックスを挿入しました。 特殊な記号を1文字、図として使用したかったのです。 一文字分だったのでテキストボックスの面積を極力小さくし、「書式設定」で線の色をなくし、「文字列の折り返し」で、背面へ移動しました。 そしたらそのテキストボックスにカーソルをもっていっても、選択できなくなってしまったんです。 移動させることは勿論、削除する事も出来ない‥。 うまく選択できる方法ってありませんか??

専門家に質問してみよう