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

解決


VB未経験  2004-12-02 02:28:44  No: 117925

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


nanashi  2004-12-02 03:02:06  No: 117926

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

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


VB未経験  2004-12-02 03:41:32  No: 117927

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-02 04:44:21  No: 117928

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


VB未経験  2004-12-02 04:54:32  No: 117929

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

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


ねろ  2004-12-02 06:52:24  No: 117930

>画面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 21:45:49  No: 117931

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


ねろ  2004-12-03 00:56:27  No: 117932

Unload Me
又は
Unload Form1
です


VB未経験  2004-12-03 17:24:55  No: 117933

解決


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加