我一直在試圖算出這個斷斷續續,持續數週。動態變化圖像圖片框中不能正常工作
在我的VB 2010窗體應用程序中,我有一些圖片框使用拖放方法從其他圖片框中填充圖片。這沒問題,它工作正常。圖片框全部放在分組盒中。
問題是試圖在拖和拖放操作交換兩個圖片框之間的圖片。換句話說,pBox1具有image.x,pBox2具有image.y。將圖像從pBox2拖到pBox1,然後放下它; pBox1將從pBox2獲得image.y,pBox2將從pBox1獲得image.x。
有了這個例子,這裏是我到目前爲止的代碼:
Private Sub pBox2_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pBox1.MouseDown
strImageSource = "pBox2" 'strImageSource is a global string variable
[other stuff]
end sub
^這節省了源圖片框的名字命名的全局字符串。
Private Sub pBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles pBox1.DragDrop
For Each Control as PictureBox in GroupBox1.Controls.OfType(of PictureBox)()
if Control.Name = strImageSource then
Control.Image = pBox1.Image
end if
next
dim imgTarget as Image = CType((e.Data.GetData(DataFormats.Bitmap)), Bitmap)
pBox1.image = imgTarget
End Sub
^這個搜索的命名由strImageSource(「pBox2」)的圖片框和副本pBox1的內容進去,然後下降,這是在pBox2到pBox1圖像。
我希望這是有道理的。
這正確地將這個圖象從pBox2到pBox1,但它並不像從pBox1切換到pBox2。 pBox2只是空白。但是,調試顯示pBox2中的圖像不是什麼;它確實包含一個位圖。它只是不可見。
現在,只是作爲一個測試,我添加了一行到每個部分,將改變圖片框的背景色:
For Each Control as PictureBox in GroupBox1.Controls.OfType(of PictureBox)()
if Control.Name = strImageSource then
Control.Image = pBox1.Image
Control.BackColor = color.red
end if
next
和背面的顏色是變化的。這告訴我,For Each部分正在工作 - 它找到控件並更改背景顏色。它只是沒有顯示圖像。
是否有我忽視的東西?
謝謝!
我們不知道你在做什麼'DoDragDrop'。它看起來像您使用該全局字符串推出了自己的方法。 – Plutonix