

vb.netでTagの内容を変更したいのですが変更できません。  
最初、フォームをロードしたときにpicturebox1のtagに"1"を設定します。フォームが最初に表示されたときにはpicturebox1に1.pngが表示されています。

次にpicturebox1をクリックするとPictureBox1_Click関数内のif文の条件判定で  
**If Me.PictureBox1.Tag = "1" Then**  
が真と判断されてpicturebox1の画像が2.pngになります。  
この時、  
**Me.PictureBox1.Image.Tag = "2"**  
でpicturebox1のTagに"2"を設定しているつもりなのですが、その下の  
**Debug.WriteLine(Me.PictureBox1.Tag.ToString)**  
では1が出力ウィンドウに出力されます。

pictureboxのTagが"1"のままなのでその後、何回クリックしても2.pngが表示されたままになります。  
最初のForm1_Load関数内でtagに"1"を設定することはできるのにその後、変更できないのはなぜでしょうか？

[code]

    Public Class Form1
        Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
            Debug.WriteLine(Me.PictureBox1.Tag.ToString) '←何回クリックしてもここは1が出力される
    
            If Me.PictureBox1.Tag = "1" Then
                Me.PictureBox1.Image = Image.FromFile("C:\Users\tada3\Desktop\自作ツール\seg\2.png")
                Me.PictureBox1.Image.Tag = "2"
                Debug.WriteLine(Me.PictureBox1.Tag.ToString)  '←ここで2が出力されてほしいが、1が出力される
            ElseIf Me.PictureBox1.Tag = "2" Then
                Me.PictureBox1.Image = Image.FromFile("C:\Users\tada3\Desktop\自作ツール\seg\1.png")
                Me.PictureBox1.Image.Tag = "1"
            End If
        End Sub
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Me.PictureBox1.Image = Image.FromFile("C:\Users\tada3\Desktop\自作ツール\seg\1.png")
            Me.PictureBox1.Tag = "1"
        End Sub
    End Class
    
[/code]


CC BY-SA 4.0
2022-05-01T02:17:37.143
88592
2022-05-01T02:24:34.103
51020
question
vb.net
vb.netでTagの内容を変更できない


**PictureBox1.Tag** と **PictureBox1.Image.Tag** を混在しているのが原因でした。  
以下の内容できちんと動作しました。

[code]

    Public Class Form1
        Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
            Debug.WriteLine(Me.PictureBox1.Image.Tag.ToString) '←何回クリックしてもここは1が出力される
    
            If Me.PictureBox1.Image.Tag = "1" Then
                Me.PictureBox1.Image = Image.FromFile("C:\Users\tada3\Desktop\自作ツール\seg\2.png")
                Me.PictureBox1.Image.Tag = "2"
                Debug.WriteLine(Me.PictureBox1.Image.Tag.ToString)  '←ここで2が表示されてほしいが、1が表示される
            ElseIf Me.PictureBox1.image.Tag = "2" Then
                Me.PictureBox1.Image = Image.FromFile("C:\Users\tada3\Desktop\自作ツール\seg\1.png")
                Me.PictureBox1.Image.Tag = "1"
            End If
        End Sub
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Me.PictureBox1.Image = Image.FromFile("C:\Users\tada3\Desktop\自作ツール\seg\1.png")
            Me.PictureBox1.Image.Tag = "1"
        End Sub
    End Class
    
[/code]

ありがとうございました。


CC BY-SA 4.0
2022-05-01T02:24:34.103
88593
2022-05-01T02:24:34.103
51020
88592
answer