|
ま・・間に合わなかった・・デス。。
2005で動かしちゃいましたが、せっかくなので解決例の代わりにテストしたコードを載せてみマス。
とりあえず動的にPictureBoxを追加しつつ、
それぞれのコントロールでマウス移動イベント拾ってマス。
なんかカッコ悪いコード・・。
Dim mIndex As Integer = 0
Dim pbArray() As PictureBox '// 動的PictureBoxコントロール配列
'// ボタン押ささったらコントロールを追加しマス!
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim pb As New PictureBox() '// 追加するコントロール
Dim gr As Graphics '// 書き込むグラフィック
Dim fn As New Font("MS ゴシック", 14) '// ふぉとん(雑字がベスト)
Dim sf As New StringFormat() '// 縦書き
Dim rc As RectangleF '// れくたんF
Try
'// とりあえず適当に値セットデス
With pb
.Tag = mIndex
.Top = 0
.Left = 40 * mIndex
.Width = 40
.Height = Me.Height
.Image = New Bitmap(pb.Width, pb.Height)
End With
gr = Graphics.FromImage(pb.Image)
'// 縦書きの指定
sf.FormatFlags = StringFormatFlags.DirectionVertical
rc = New RectangleF(0, 0, pb.Width, pb.Height)
gr.FillRectangle(Brushes.WhiteSmoke, rc)
gr.DrawString("カンタービレ", fn, Brushes.Red, rc, sf)
'// イベントを関連させマス
AddHandler pb.MouseMove, AddressOf PictureBox_MouseMove
'// なんかカッコ悪いのは気にしないで配列追加
If pbArray Is Nothing Then
ReDim pbArray(0)
Else
ReDim Preserve pbArray(pbArray.Length)
End If
pbArray(mIndex) = pb
'// フォームに追加配置デス
Me.SuspendLayout()
Me.Controls.Add(pb)
Me.ResumeLayout(False)
mIndex += 1
Finally
If Not fn Is Nothing Then fn.Dispose()
If Not gr Is Nothing Then gr.Dispose()
End Try
End Sub
|