• ベストアンサー

SSTABでのKEYDOWNイベント

todo36の回答

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

SSTAB上にフォーカスがあるときにどんなキーでもForm_KeyDownイベントが2回発生します。 これはSSTABのバグだと思います。 Private Sub Form_Load() Me.KeyPreview = True End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Static Cnt As Long Debug.Print Cnt, KeyCode Cnt = Cnt + 1 End Sub で、KeyCode = 0にすると何故うまくいくかというと、うーん分からん..

u_kappa
質問者

お礼

やっぱりバグなんですか。。。結構はまっていたので助かりました。 KeyCode=0ですが、KeyDownイベントのヘルプに以下のようにありました。 KeyCode=0とするとKeyイベントが無効となるようです。 以下引用のみ--------- キーボード イベントの処理をフォーム レベルだけで行い、 コントロールにキーボード イベントを送らないようにするには、 フォームの KeyPress イベントで引数 KeyAscii を 0 に設定し、 フォームの KeyDown イベントで引数 KeyCode を 0 に設定します。

関連するQ&A

  • Keydownイベントについて

    VB6.0について質問です。 FormでKeydownイベントが動きません。 どのような原因が考えられますか? コードは以下のように記述しています。 Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyF8 cmd_F8.Value = True Case vbKeyF9 cmd_close.Value = True End Select End Sub

  • ListViewで、PageDownキーイベントを発生させるには?

    VB6で開発しています。 ラベルとListViewのみのフォーム上で、 PageUpやPageDownキー押下で、イベントを発生させたいのですが、 PageDownを押下すると、ListView内のリストのカーソルが下に移動してしまい、 (フォーカスが当たるコントロールがListViewしかないためと思われますが) イベントが発生せずに困っています。 自分で実現しようとしてできなかった方法を紹介します ・リストビューにフォーカスが当たらないようにする。   Enabled = Falseだとスクロールバーが使えないので困る。    ・ListViewはEnabled=Falseにし、スクロールバーコントロールを使って、スクロールさせる。   スクロールさせる方法が見つかりませんでした。 何か、よいアイデアや方法があれば、ご教授宜しくお願いしますm(_ _)m

  • 継承したFormでKeyDownイベントを一括処理するには?

    VB 2005を使用しています System.Windows.Forms.Formを継承したFormを使って 画面を作っています。 各画面のKeyDownイベントに同じ処理をいれたいのですが、 個々の画面に実装すると変更が発生した場合、 各画面ごとに修正するという事態を回避したいと思います。 そこで継承したForm内でKeyDownイベントを管理したいのですが その様な方法はあるのでしょうか? ある場合、どういったキーワードがあるのでしょうか

  • UserControl内の複数のTextBoxでKeyDownイベントが使えない

    VB2005の初心者です。 色々調べたつもりなのですが解らなくてよろしくお願いします。 フォームのTab移動を[Enter]きーで移動するようにしているのですが UserControlに複数のTextBoxを配置しUserControlを作成したものを、フォームに配置するとKeyDownイベントが取得できないというか、フォームに配置したTextBoxなどにフォーカスが移動してしまいます。 UserControl内のTextBoxのTabIndex順に移動させる方法などご存知の方いらっしゃいましたらご教授願えないでしょうか。 ProcessDialogKeyのオーバーライト辺りまでは調べたのですがよく解らなくてお願いします。

  • VB6.0 KeyDownイベントの対応

    VB6.0を使ってプログラム中ですが、下記の  Command10_KeyDown で、複合キー「 Ctrl + ↓」 だとイベント KeyDown を受信できるのですが、単純な キー「↓」だと、イベント KeyDown を受信でず、他のボタンにフォーカスが移ってしまいます。 Comman10_GotFocus に何か対応策を入れて、単純な キー「↓」のイベント KeyDown を受信する方法はないでしょうか? Private Sub Command10_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 40 Then execsub001() End If End Sub Private Sub Commnad10_Click() execsub001() End Sub Private Sub Comman10_GotFocus() 上記問題への対応策を此処に記述したい End If Private Sub execsub110() 内容は省略 End Sub

  • ssTabの上のActiveXコントロール

    VB6.0で開発しています。 sstabに3つのActiveXコントロール(OCX)を貼り付けてexeを作成しています。 しかし、初心者なため、OCX内のコントロール たとえばコマンドボタンや、コンボボックスにセットフォーカスすら 移りません。 これでは値を設定することもできません。 すみませんが、御存知の方、おしえてください。

  • イベントのキャンセル

    VS2005standardのVB.NETで開発しています。 質問: テキストフィールドからフォーカスアウトした瞬間に形式チェックロジックを走らせていますが、画面の右下に設置した「キャンセルボタン」を押下するタイミングでフォーカスアウトしたら、イベントをキャンセルしたい 要するにキャンセルして画面を閉じたいのに、フィールドの入力形式がが違うとエラーが出るので、うっとうしいのです。 こういう場合の簡単な対応方法ってありますか? お教えください。

  • Tabキーを拾えるVB2005カスタムコンボを作りたいです

    こんにちは。 現在、VB2005をつかって開発をしています。 作りたいものはTabキーやShiftキー押下時にKeydownでイベントを取得できる カスタムコンボボックスなのですがどうも上手くいきません。 どなたかご助言をよろしくお願いします。

  • F2+Ctrl押下時のイベント記述方法

    VB6を使用しています。 F2+Ctrlを同時に押下した場合の処理の記述がうまくいきません。 Form_KeyDownイベントで下記のように記述しようと考えたのですが、KeyCodeに17が入ってしまいうまくいきません。 アドバイスをお願いします。 ----------------------- select case KeyCode  case vbKeyF2   If Shift = 2 Then   'Ctrl+F2押下時   ***処理   End If ※他のファンクションボタンの処理もあるのでcase文にしています。

  • vbで[ctrl]+[tab]を認識させるにはどうしたらよいでしょうか?

    はじめまして、どうしてもうまくいきません。教えてくださいませ。 [ctrl]+[tab]キー入力を認識させるにはどうしたら良いでしょうか? 現在、VBでMDIフォームを使用してプログラムを作っております。 [ctrl]+[tab]キー入力を行なうと、子フォーム間でフォームの移動が起こってしまいます。CommandButton押下時にのみ、フォームの移動を行なうようにしたいので、 [ctrl]+[tab]キー入力を制御して実現させようとしているのですが、うまくいきません。 MSDNライブラリには、KeyUpとKeyDownのイベントで Tabキーの操作は発生しないと書いてありました。。。 何か方法がありましたらお教えいただけると助かります。 どうぞよろしくお願いします。