投稿日 | : 2005/07/03(Sun) 23:24 |
投稿者 | : Starfish |
Eメール | : |
URL | : |
タイトル | : Re^3: Form_KeyDownについて |
>ですが、バグ報告があったことは理解しました。ただ回避方法がないのは
>残念ですが。(読み足らない?)
自動翻訳は、
>>解決方法
>>タブ コントロールにフォーカスがある場合、 2 のキー イベントをコードが無視するよう
>>コード記述の可能性があります。 これは、以前にキー イベントが発生したかどうか、
>>グローバル フラグ変数を表するために、利用することで実行できました。 これの以外、
>>この機能に依存するコードを記述するのを回避するのが最適なオプションです。
適当に訳すと
解決方法
もしもフォーカスがSSTabコントロールにあったら、2つ目のキーイベントを
無視するようにプログラムを書くことで、可能かも知れません。
そのキーイベントが以前に発生したかどうかをあらわすグローバルなフラグ変数
を利用することで、これを行うことができるかもしれません。
これのほかに、最良のオプションはこの機能性に依存するコードを書くことを
避けることです。
なので、フラグをもって制御するか、SSTabを使った場合はKeyPreview機能を
使うなといっております。
フラグを使った、例をあげておきます。
Dim mblnTab As Boolean
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If Me.ActiveControl.Name = "SSTab1" Then
mblnTab = Not mblnTab
If Not mblnTab Then
Debug.Print "無視" & CStr(KeyCode)
Exit Sub
End If
Else
mblnTab = False ' 念のため
End If
Debug.Print KeyCode
End Sub
個人的には、SSTabは使わずに、レイアウトとかは大変ですが、TabStrip
を使用することを薦めておきます。