投稿者 永字  (社会人) 投稿日時 2008/10/4 12:02:44
お返事が遅れて申し訳有りません。

>鍵さん
ご意見ありがとうございます。

>mapBoxというPictureBoxコントロールがmapForm上に配置されていて、
>実際に画像が描画されるのはmapBoxの上ということで合っていますでしょうか。
はい、それで間違っておりません。

My.Forms.mapForm.mapBox.Invalidate()
は、こちらもUpdate,Refresh共に試しましたが無理なようでした。

>るしぇさん
ご指摘ありがとうございます。
ポカミスでした…。すみません。
musicFormのコピペで作った際に、修正し忘れていたようです。

正しくは

   'マップフォーム表示
    Private Sub ToolStripMenuItemMap_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItemMap.Click
        '表示させるフォームのインスタンスを作成
        Dim mapForm As New mapForm()
        '表示させるフォームを所有する
        Me.AddOwnedForm(My.Forms.mapForm)
        My.Forms.mapForm.Show()
    End Sub

でした。
これが原因かとも思ったのですが、修正してみても更新には影響が出ませんでした。


    'マップを再描画する
    Sub mapRedraw()
        Dim i As Integer
        myImages = New List(Of Bitmap)
        points = New List(Of Point)
        For i = 0 To 19
            If Not Me.tokenListC.Items(i) Is "-" Then
                Dim args() As String = Me.tokenListC.Items(i).Split(CChar(vbTab))
                'マップフォームに値を渡す
                Dim XX As Integer = args(2) - 16
                Dim YY As Integer = args(3) - 16
                myImages.Add(New Bitmap(args(1)))
                points.Add(New Point(XX, YY))
            End If
        Next
        mapForm.mapBox.Invalidate()
    End Sub

再描画命令をmapBoxに渡しましたが、相変わらず画面を一度窓の裏に隠さないと更新されないようです。

ちなみに上半のコードにあるDim mapForm As New mapForm()
は、元々表示されていないマップフォームをメインフォームの前に出す処理です。

Newをすると不都合、というご意見も有ったのですが、Newせずに定義する方法が有るのでしょうか?

よろしくお願いします。