VBを始めたばかりの初心者です。
VB2008を使ってPictureBoxに取り込んだイラストをキーボードを使って自由に動かしたいと思っています。
今作ったものの問題点
1.現状、全く同時に→と↑のキーを押せば右上に動きます。
また、→キーを押してイラストが右に動いているときに、↑キーを押すと上に動きます。
これを右上に動くようにする方法が知りたいのです。
2.キーを押し続けてイラストを動かし続けようとすると、一回動いて止まってから動き続けるという風になってしまいます。
これを止まらずに動くようにしたいのです。
ちなみにこれ↓が今のソースコードです。
Public Class Form1
Private Sub form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.Up Then
PictureBox1.Top = PictureBox1.Top - 10
End If
End Sub
Private Sub form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.Down Then
PictureBox1.Top = PictureBox1.Top + 10
End If
End Sub
Private Sub form1_KeyLeft(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.Left Then
PictureBox1.Left = PictureBox1.Left - 10
End If
End Sub
Private Sub form1_KeyRight(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.Right Then
PictureBox1.Left = PictureBox1.Left + 10
End If
End Sub
End Class
これ↑を実行する場合は、デザインにPictureBoxを表示してください。PictureBoxに入れるイラストは適当なものを入れてください。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
4方向のフラグをForm1クラスに準備してTimerで動かすようにしてみましょう
dim bUP, bDown, bLeft, bRight as Boolean
と宣言しておきます
FormのKeyUpとKeyDownを
---- FormのKeyUpイベント
Select Case e.KeyCode
case Keys.Up
bUp = False
case Keys.Down
bDown = False
case Keys.Left
bLeft = False
case Keys.Right
bRight = False
end select
---- FormのKeyDown イベント
Select Case e.KeyCode
case Keys.Up
bUp = True
case Keys.Down
bDown = True
case Keys.Left
bLeft = True
case Keys.Right
bRight = True
end select
---- FormのLoadイベント
Me.keyPreview = True
Timer1.Enabled = True
--- Timer1のTickイベント
dim pt as Point = PictureBox1.Location
if bUp or bDown then
pt.Y -= IIF( bUp, 10, 0 )
pt.Y += IIF( bDown, 10, 0 )
end if
if bLeft or bRight then
pt.X -= IIF( bLeft, 10, 0 )
pt.X += IIF( bRight, 10, 0 )
end if
PictureBox1.Location = pt
といた具合でどうでしょう
回答ありがとうございます。
教えていただいたとおりに行うと、正しくできました。
このソースコードの意味はこれから勉強していきたいと思います。
また質問させていただくときには、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) Visual Basic : ImageListの画像がそろったときにメッセージを表示 1 2023/07/20 13:53
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンボボックスにキー入力をさ...
-
タブキー押下時のイベントをひ...
-
【VB】タブ切り替え時のイベント
-
VC++ で TextBoxから、次...
-
一定時間操作されないと自動で...
-
VB.NETでフォームがない...
-
VB.NETのDropDownListをReadOnl...
-
コントロールキーが押されたキ...
-
プログラミングc# Windowsフォ...
-
IEで、BackSpaceで「戻る」機能...
-
Visual Basic 6.0 コンボボック...
-
キーイベントを擬似的に発生さ...
-
コマンドボタン(入力)をクリッ...
-
特定のキーを押すまでループさ...
-
エクセルでEnterキーが効かなく...
-
VBでイベント処理を追加する...
-
(VBA)チェックボックスのclick...
-
フォーカスについてお教えください
-
KEYPREVIEW=TRUEについて。意味...
-
テキストボックスの入力文字を1...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB】タブ切り替え時のイベント
-
Visual Basic 6.0 コンボボック...
-
一定時間操作されないと自動で...
-
特定のキーを押すまでループさ...
-
WPFでの時刻入力コントロールに...
-
キーイベントを擬似的に発生さ...
-
(VBA)チェックボックスのclick...
-
タブキー押下時のイベントをひ...
-
テキストボックスの入力文字を1...
-
VB.NETでフォームがない...
-
エクセルVBAのテキストボック、...
-
コンボボックスにキー入力をさ...
-
KEYPREVIEW=TRUEについて。意味...
-
フォーカスについてお教えください
-
複数のテキストボックスのカン...
-
VB6で電卓を作っているのですが...
-
Excel VBA マクロ実行中のみテンキ...
-
VB.NETのDropDownListをReadOnl...
-
IEで、BackSpaceで「戻る」機能...
-
VC++ で TextBoxから、次...
おすすめ情報