2

VB.NETでカードゲームのプログラムを書いています。問題が発生しました。Computer_Flow は、デザイン ウィンドウで System.Windows.Forms.Panel マニュアルのように宣言されます。プログラムで次のような画像ボックスを作成しました。

Dim P As PictureBox = New PictureBox  
P.Size = New Point(Cards_Width, Cards_Height)  
P.SizeMode = PictureBoxSizeMode.StretchImage  
P.Image = Image.FromFile(Images_Folder_Path & "Back.png")   
P.Tag = Deck(DI)    
P.Margin = New Padding(1)  
Computers_Hand(DI) = Deck(DI)  
Computer_Flow.Controls.Add(P)

後で、その PictureBox イメージを変更したいと思います。私はそれを次のように変更しようとしています:

Computer_Flow.Controls(i).image = Image.FromFile(Images_Folder_Path & "Back.png")  

しかし、「イメージ」は System.Windows.Forms.Control のメンバーではありませんというエラーが表示されます。

誰がこの問題を解決するのを手伝ってくれますか?

ありがとう!

4

2 に答える 2

1

メンバーControlを含まない基本クラスのリストにアクセスしています。Image

次のように型キャストする必要がありますPictureBox

Dim pb As PictureBox = TryCast(Computer_Flow.Controls(i), PictureBox)

If Not pb Is Nothing Then
     pb.image = Image.FromFile(Images_Folder_Path & "Back.png")
End If

そうすれば、VB はそれが単なる ではControlなく、メンバPictureBoxを持つ であることを認識します。Image念のため、を追加することをお勧めしTryCastます。

于 2013-01-31T16:15:10.110 に答える
1

cast結果を得るには、それcontrolをしなければなりませpicture boxん。これを試して、

CType(Computer_Flow.Controls(i),PictureBox).image=Image.FromFile(Images_Folder_Path & "Back.png")

Cタイプ

編集:

invalidCastExceptionこのような効果的な方法で簡単に回避できます

If TypeOf Computer_Flow.Controls(i) Is PictureBox then

CType(Computer_Flow.Controls(i),PictureBox).image=Image.FromFile(Images_Folder_Path & "Back.png")

End If

TypeOf

于 2013-01-31T16:32:40.097 に答える