PictureEdit 或 PictureBox 的影像未以新形式 ( Form2) 顯示。
此外,當單擊父表單 (form1) 中的不同控制元件時,此新表單應自動關閉。
使用我的代碼,當我雙擊 Form1 中的影像時,只出現第三個影像。
有沒有辦法讓我不需要根據Form1中的影像數量創建3個新表單?
作為記錄,我使用 Visual Studio 2010
Public Class Form1
Private Sub PictureEdit1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureEdit1.DoubleClick
Dim yourForm As New Form2()
yourForm.ShowDialog()
End Sub
Private Sub PictureEdit2_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureEdit2.DoubleClick
Dim yourForm As New Form2()
yourForm.ShowDialog()
End Sub
Private Sub PictureEdit3_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureEdit3.DoubleClick
Dim yourForm As New Form2()
yourForm.ShowDialog()
End Sub
End Class
Public Class Form2
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Form_One As Form1 = CType(Application.OpenForms("form1"), Form1)
Me.PictureEdit1.Image = Form_One.PictureEdit1.Image
Me.PictureEdit1.Image = Form_One.PictureEdit2.Image
Me.PictureEdit1.Image = Form_One.PictureEdit3.Image
End Sub
End Class

uj5u.com熱心網友回復:
需要的小改動:
- 向您的 Form2 添加一個接受 Image 作為引數的建構式。
- Override ,當您在表單外部
OnDeactivate單擊時關閉表單。 - 使用
Show(Me)代替ShowDialog():這將使呼叫表單成為 Form2 的所有者,因此它保持在其所有者之上,但它不是模態視窗,當您在其外部單擊時不會停用。
Public Class Form1
' [...]
Private Sub PictureEdit1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureEdit1.DoubleClick
Dim f2 As New Form2(PictureEdit1.Image)
f2.Show(Me)
End Sub
' [...]
End Class
Public Class Form2
Public Sub New()
Me.New(Nothing)
End Sub
Public Sub New(img As Image)
InitializeComponent()
PictureEdit1.Image = img
End Sub
Protected Overrides Sub OnDeactivate(e As EventArgs)
MyBase.OnDeactivate(e)
BeginInvoke(New Action(Sub() Close()))
End Sub
End Class
uj5u.com熱心網友回復:
完成 Jimi 建議的更改后,您還可以使用 ONE sub 來處理所有三個 PictureEdit 控制元件,方法是在“Handles”關鍵字后列出多個控制元件/事件:
Private Sub PictureEditAll_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureEdit1.DoubleClick, PictureEdit2.DoubleClick, PictureEdit3.DoubleClick
Dim picEdit As PictureEdit = DirectCast(sender, PictureEdit)
Dim f2 As New Form2(picEdit.Image)
f2.Show(Me)
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/442639.html
上一篇:jq帶單引號bash腳本
