VB2010にて、下記のコードでkeydownイベントを発生させているのですが、
データ番号の更新がされず、Ctrl+→を押すと、毎回同じ数値がメッセージボックスに表示されます。
どう修正すれば、データ番号=データ番号+1の値が更新されていくのでしょうか?
教えてください。どうぞよろしくお願いいたします。

Private Sub MainPage_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'キーイベントをフォームで受け取る
Me.KeyPreview = True
'KeyDownイベントハンドラを追加
AddHandler Me.KeyDown, AddressOf MainPage_KeyDown
End Sub

Private Sub MainPage_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
'「Ctrl+←」押下時
If e.Control And e.KeyCode = Keys.Left And 重ね描きFlag = True And Me.TextBox3.Text <> "" And データ番号 > 1 Then

End If
'「Ctrl+→」押下時
If e.Control And e.KeyCode = Keys.Right And 重ね描きFlag = True And Me.TextBox3.Text <> "" And データ番号 < グラフデータ数 Then
e.Handled = True
データ番号 = データ番号 + 1
MsgBox(データ番号)
'X値表示
Me.TextBox3.Text = グラフデータ(描画系列X, データ番号)
'Y値表示
Me.TextBox4.Text = グラフデータ(描画系列Y(マーク系列), データ番号)
'マークの移動
マークX座標 = Me.Chart1.ChartAreas(0).AxisX.GetPosition(グラフデータ(描画系列X, データ番号)) * Me.Chart1.Width / 100 - 10
マークY座標 = Me.Chart1.ChartAreas(0).AxisY.GetPosition(グラフデータ(描画系列Y(マーク系列), データ番号)) * Me.Chart1.Height / 100 - 10
'MsgBox(マークX座標 & "/" & マークY座標)
'Me.PictureBox1.Location = New System.Drawing.Point(マークX座標, マークY座標)
'System.Windows.Forms.Application.DoEvents()
'Me.Chart1.Refresh()
End If
End Sub

このQ&Aに関連する最新のQ&A

A 回答 (1件)

このソースだけだと、「データ番号」は+1されていますね。


他の部分で操作していませんか?

また、変数はどのように切られていますか?
MainPage_Loadメソッド内にDimで切ってたりすると保持されませんので、
メソッド外にPrivate等で切る必要があります。


-----------------------------------------------------------------------

Private dataNumber = 0  '/ プライベートで切った場合
Private Sub MainPage_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles Me.KeyDown
  Dim num = 0  '/ ローカルで切った場合

  dataNumber += 1
  num += 1

  MsgBox(dataNumber)  '/ 毎回+1されていく
  MsgBox(num)  '/ 何度やっても1が表示される
End Sub

この回答への補足

回答ありがとうございます。
メッセージボックスをシングルクォーテーションで非表示にすると、
Ctrl+→を押すたびにデータ番号がプラス1され、
テキストボックスにX,Y座標が更新表示されます。
メッセージボックスを表示させると、
何度Ctrl+→を押しても、同じデータ番号が表示され、
変数の更新がされません。
よくわからない現象です。

補足日時:2011/04/08 10:28
    • good
    • 0
この回答へのお礼

データ番号の変数はモジュールでpublic宣言しています。
今、メッセージボックスの表示をなしにしてみたら、正常に変数の更新がされました。
メッセージボックスを再び表示させてみたら、変数の更新がされずに、同じ値ばかり表示されます。
メッセージボックスがじゃまをしているようです。。。

お礼日時:2011/04/07 17:48

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報