特定key取得イベントが発生しない
投稿者 うたひこ  (社会人)
投稿日時
2008/11/20 20:08:10
こんにちは。
こういうことじゃないんですかね?
茶さんの言ってる意味がわからないので、
できればコードを全部見せてください。
Public Class Form1
Public Sub New()
InitializeComponent()
Me.KeyPreview = True
End Sub
Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs)
MyBase.OnKeyDown(e)
MsgBox("反映しています、ココ")
End Sub
End Class
こういうことじゃないんですかね?
茶さんの言ってる意味がわからないので、
できればコードを全部見せてください。
投稿者 n  (社会人)
投稿日時
2008/11/20 20:13:49
KeyEventArgs.KeyCode
か
KeyPressEventArgs.KeyCode
で判断。
か
KeyPressEventArgs.KeyCode
で判断。
投稿者 茶封筒  (小学生)
投稿日時
2008/11/20 22:34:31
再インストールしたら、復元しただけの処理になってた。
key取得できないのが、正常のような気もしてきたよ。
以前は同コードで処理できたんだしさ。
key取得できないのが、正常のような気もしてきたよ。
以前は同コードで処理できたんだしさ。
投稿者 (削除されました)  ()
投稿日時
2008/11/20 23:24:21
(削除されました)
投稿者 n  (社会人)
投稿日時
2008/11/20 23:33:42
>以前は同コードで処理できたんだしさ。
じゃ、以前のコードと違うところを探すしかないね。
一応他の人のためにサンプル。
記憶だけで書いてるので、細かい間違いは勘弁。
じゃ、以前のコードと違うところを探すしかないね。
一応他の人のためにサンプル。
Public Class Form1
Public Sub New()
InitializeComponent()
End Sub
Public Sub Form1_Load(Byval sender As Object, Byval e As EventArgs) Handles Form1.Load
Me.KeyPreview = True
End Sub
Private Sub TextBox1_KeyPress(Byval sender As Object, Byval e As KeyPressEventArgs) Handles TextBox1.KeyPress
If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Enter) Then
MessageBox.Show("Enter is pressed.")
End If
End Sub
End Class
記憶だけで書いてるので、細かい間違いは勘弁。
投稿者 茶封筒  (小学生)
投稿日時
2008/11/21 00:15:35
enterKeyは反応します。
key指定しない場合も発生します(イベント)
英数文字の入力は反応がありません。
コードエディターではエラー表示もされてません。
VB以外のコードでは反応してるようです。
まぁ、別にいいですよ。
インターネットを解約しますから。
では。
key指定しない場合も発生します(イベント)
英数文字の入力は反応がありません。
コードエディターではエラー表示もされてません。
VB以外のコードでは反応してるようです。
まぁ、別にいいですよ。
インターネットを解約しますから。
では。
投稿者 あにす  (社会人)
投稿日時
2008/11/21 01:32:09
一通り試したけど、ちゃんと反応するけどなー
VB.NET
C#
C++/CLI
IronPython
VB.NET
Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
Me.Text = e.KeyValue.ToString()
End Sub
C#
private void Form1_KeyDown(object sender, KeyEventArgs e) {
this.Text = e.KeyValue.ToString();
}
C++/CLI
System::Void Form1_KeyDown(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e) {
this->Text = e->KeyValue.ToString();
}
IronPython
import clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import *
def form_KeyDown(sender,e):
form.Text = e.KeyValue.ToString()
form = Form()
form.KeyDown += form_KeyDown
Application.Run(form)
投稿者 茶封筒  (小学生)
投稿日時
2008/11/21 01:54:08
すいませn
イベントのeを渡してないだけでした(t_t)
入門者なんで。
Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
' If e.KeyValue = 37 Then
'MsgBox("keyValue検証")__検証合格
'End If
If e.KeyCode = Keys.Left Then
MsgBox("keyCode検証")
End If
End Sub
イベントのeを渡してないだけでした(t_t)
入門者なんで。
Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
' If e.KeyValue = 37 Then
'MsgBox("keyValue検証")__検証合格
'End If
If e.KeyCode = Keys.Left Then
MsgBox("keyCode検証")
End If
End Sub
投稿者 茶封筒  (小学生)
投稿日時
2008/11/21 02:11:23
言い訳ですが、コードエディターで、波線がでなかったんで。
e.graphics
e.key
e.~~
e.graphics
e.key
e.~~
投稿者 あにす  (社会人)
投稿日時
2008/11/21 02:30:56
>茶封筒さん
文法に間違いが無ければ波線は出ませんよね。
keys.keycode=keys.leftは常にFalseなのでMessegeBoxが出なかったのでしょう。
なにより上手く行ったようでよかったです。
文法に間違いが無ければ波線は出ませんよね。
keys.keycode=keys.leftは常にFalseなのでMessegeBoxが出なかったのでしょう。
なにより上手く行ったようでよかったです。
投稿者 茶封筒  (小学生)
投稿日時
2008/11/21 04:54:49
Option Strict On
Public Class Form1
Private leftFlag As Boolean = False
Private rightFlag As Boolean = False
Private left_ichi As Integer
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.Left Then leftFlag = True
If e.KeyCode = Keys.Right Then rightFlag = True
End Sub
Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
If e.KeyCode = Keys.Left Then leftFlag = False
If e.KeyCode = Keys.Right Then rightFlag = False
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If leftFlag = True Then
left_ichi -= 3
End If
If rightFlag = True Then
left_ichi += 3
End If
If left_ichi < 3 Then left_ichi = 3
If left_ichi > 897 Then left_ichi = 897
Me.mikataA.Left = left_ichi
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
left_ichi = 450
End Sub
End Class
処理速度が遅くて、キャラクターが、ぶれますが・・・
ここだけc++で作って、basicとマッチできますか?
無料版は、なかなか、きびすい感じです。
投稿者 あにす  (社会人)
投稿日時
2008/11/21 06:06:19
>茶封筒さん
Me.mikataA.Left = left_ichi
のmikataAとは何かのコントロールでしょうか?
コントロールを移動させている限りは言語を変えてもブレはなくならないでしょう。
Me.mikataA.Left = left_ichi
のmikataAとは何かのコントロールでしょうか?
コントロールを移動させている限りは言語を変えてもブレはなくならないでしょう。
投稿者 桜  (社会人)
投稿日時
2008/11/21 06:31:02
コントロールを使うのではなく、描画してしまうほうがいいと思います。
数が増えるとコントロールだと重かったりするかもなので。
数が増えるとコントロールだと重かったりするかもなので。
投稿者 茶封筒  (小学生)
投稿日時
2008/11/22 01:14:06
基礎構築
興味
基礎
興味
で遊んでましたが、また基礎をやることにしました。
WPF初心者入門をやります。
(^^p)
興味
基礎
興味
で遊んでましたが、また基礎をやることにしました。
WPF初心者入門をやります。
(^^p)
投稿者 茶封筒  (小学生)
投稿日時
2008/11/22 02:33:28
Option Strict On
'VisualBasic2008無料版
Public Class Form1
Private kyarakuter As Image
Private leftFlag As Boolean = False
Private rightFlag As Boolean = False
Private ichi_X As Integer 'キャラ位置(横線上のみ)
Public Sub New()
' この呼び出しは、Windows フォーム デザイナで必要です。
InitializeComponent()
' InitializeComponent() 呼び出しの後で初期化を追加します。
kyarakuter = My.Resources.houdai_baria
End Sub
Private Sub kyarakuter_hyouji()
Dim g As Graphics
g = Me.CreateGraphics()
g.DrawImage(kyarakuter, ichi_X, 100)
g.Dispose()
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.Left Then leftFlag = True
If e.KeyCode = Keys.Right Then rightFlag = True
End Sub
Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
If e.KeyCode = Keys.Left Then leftFlag = False
If e.KeyCode = Keys.Right Then rightFlag = False
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Refresh()
If leftFlag = True Then
ichi_X -= 2
If ichi_X < 2 Then ichi_X = 2
End If
If rightFlag = True Then
ichi_X += 2
If ichi_X > 298 Then ichi_X = 298
End If
kyarakuter_hyouji()
End Sub
End Class
Disposeの使い方は、これで、いいですか?
一応、このコーナーは解決ですかねぇ(^^)
では。
投稿者 茶封筒  (小学生)
投稿日時
2008/11/22 07:51:50
WPF!!!
なんじゃい!このスゴイやつ!
すごすぎる。
Inkcanvasを使うだけで、フリーソフトに匹敵する!!!wwww
こんなに、すごいのか・・・・
なんじゃい!このスゴイやつ!
すごすぎる。
Inkcanvasを使うだけで、フリーソフトに匹敵する!!!wwww
こんなに、すごいのか・・・・
anyKeyで特定しない場合はイベントが発生している。
VB2008無料版、Vista
とりあえず、VBを再インストールすることにした。
うたさん>情報を実行しましたが、反応ありませんでした。
コード
option strict on & offの条件
イベント内
if keys.keycode=keys.left then
MsgBox("ok")