エンターキーで画面遷移するには?

解決


VB未経験  2004-12-01 17:28:44  No: 117925  IP: [192.*.*.*]

画面Aから画面Bに遷移する際、画面Aで項目を入力後、
何かボタンを押下して画面Bに遷移するのではなく、
エンターキーを押下すると遷移するようにすることは
VBでできるのでしょうか?
可能であれば、その方法(サンプルソース)を
教えていただけますでしょうか?

編集 削除
nanashi  2004-12-01 18:02:06  No: 117926  IP: [192.*.*.*]

FormのKeyPreviewプロパティをTrueにしておけば、
Form_KeyDownイベントでエンターキーの押下を取得出来ます。

フォーカスを持ってるコントロールによっては、
またはデフォルトボタンを設定されてたりするとキーを取得できない可能性もありますが…。

編集 削除
VB未経験  2004-12-01 18:41:32  No: 117927  IP: [192.*.*.*]

nanashiさん、ありがとうございます。
それで・・・すごく初歩的かもしれませんが、
なんせ未経験なのでソースを具体的に教えていただけますか?

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
    (画面Bに飛ぶ処理)←←←ここを教えて下さい。
  End If
End Sub

また、画面Aの中のあるテキストボックスの中に「1」を入れて
エンターキーを押下すると画面Bに飛ぶ処理も併せて教えて下さい。

編集 削除
ねろ  2004-12-01 19:44:21  No: 117928  IP: [192.*.*.*]

>(画面Bに飛ぶ処理)←←←ここを教えて下さい。
これは実際には何をしたいの?

編集 削除
VB未経験  2004-12-01 19:54:32  No: 117929  IP: [192.*.*.*]

>これは実際には何をしたいの?

画面Bを呼び出すだけの処理です。

編集 削除
ねろ  2004-12-01 21:52:24  No: 117930  IP: [192.*.*.*]

>画面Bを呼び出すだけの処理です。
弱ったな。(^^;
まず画面Bを別のフォーム(Form2)と解釈して、
「飛ぶ処理」をロードしてフォーカスを当てると勝手に解釈すると。

Private Sub Form_Load()
    Form1.KeyPreview = True  'これは通常はプロパティで設定する
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyReturn Then
        Form2.Visible = True
        Form2.SetFocus
    End If
End Sub
ただしフォーム上でリターンを押すということは、フォームに張り付いて
リターンを受け取るコントロール上全てで、リターンを押すとForm2にフォーカスが
移動する事になります、やってみると相当へんですが。

テキストボックスの場合は簡単で、
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
     If KeyCode = vbKeyReturn And Trim(Text1.Text) = "1" Then
        Form2.Visible = True
        Form2.SetFocus
    End If
End Sub
こういうことかな。

編集 削除
VB未経験  2004-12-02 12:45:49  No: 117931  IP: [192.*.*.*]

ねろさん、ありがとうございます。
全然うまく伝えられなくて申し訳ありませんでした。
が・・・「テキストボックスの場合」というのが、ビンコです!
さっそくやってみたところ、画面B(Form2)に飛ぶことができました。
ちなみに、画面B(Form2)に飛ぶ際に、画面A(Form1)を閉じるには
どうしたらよいですか?

編集 削除
ねろ  2004-12-02 15:56:27  No: 117932  IP: [192.*.*.*]

Unload Me
又は
Unload Form1
です

編集 削除
VB未経験  2004-12-03 08:24:55  No: 117933  IP: [192.*.*.*]

解決

編集 削除