vb.netでピクチャボックスを動的に追加しようとしています。イベントをピクチャボックスに動的に追加するvb.net
"i"の値を変更すると、作成した最後の画像ボックスに画像とイベントを追加できます(最後の画像のみをクリックできます)。
しかし、私は以下のコードを使用すると、境界から外れているものがあると言います(インデックスはマトリックスの境界外にあります)。
私は間違っていますか? TKS
Imports System.IO
Public Class FormMain
Dim Path1 As String = Path.GetDirectoryName(Application.ExecutablePath) & "\Source\Images\1.png"
Dim Path2 As String = Path.GetDirectoryName(Application.ExecutablePath) & "\Source\Images\2.png"
Private Sub FormMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
CreateImages()
End Sub
Dim i As Integer
Dim Logo(i) As PictureBox
Sub CreateImages()
Dim i As Integer = TextBoxNumberImages.Text
For i = 0 To i - 1
Logo(i) = New PictureBox
Logo(i).Name = "Image" + Str(i)
Panel1.Controls.Add(Logo(i))
Logo(i).Image = Image.FromFile(Path1)
Logo(i).SizeMode = PictureBoxSizeMode.StretchImage
AddHandler Logo(i).Click, AddressOf _Click
Next
End Sub
'------ADD EVENT----
Dim IsImageSelected(i) As Boolean
Private Sub _Click(ByVal sender As Object, ByVal e As EventArgs)
If IsImageSelected(i) = False Then
Logo(i).Image = Image.FromFile(Path2)
IsImageSelected(i) = True
Else
Logo(i).Image = Image.FromFile(Path1)
IsImageSelected(i) = False
End If
End Sub
---- EDIT ----
私は、関数の内部にVAR宣言を変更:
Sub CreateImages()
Dim i As Integer = TextBoxNumberImages.Text
Dim Logo(i) As PictureBox
For i = 0 To i - 1
Logo(i) = New PictureBox
Logo(i).Name = "Image" + Str(i)
Panel1.Controls.Add(Logo(i))
Logo(i).Image = Image.FromFile(Path1)
Logo(i).SizeMode = PictureBoxSizeMode.StretchImage
AddHandler Logo(i).Click, AddressOf _Click
Next
End Sub
は、今では、画像に私が望む方法を作成しますイベントのピクチャボックスにアクセスすることはできません。助けて?
最初にOption Strictをオンにします。 [Scope in VB](http://stackoverflow.com/a/33249045/1070452)を読んでください。 DIMは新しいロゴ配列を毎回作成していますので、実際には2-3個あります。ランタイムまで何個あるか知りませんので、配列ではなくリストを使用してください – Plutonix
@Plutonixはい、私はそれを今実現しました。ありがとう、上記の答えは完璧です。 Ty –
いいえ「パーフェクト」はOption Strictを実装します – Plutonix