我有一個DLL:(MessageBox.DLL) 此DLL有一個看起來就像一個消息框的形式。在調用窗體的同一屏幕上從DLL彈出窗體
的MSGBOX也有類似的參數作爲原始消息框,
myMsgBox("TEXT HERE")
但問題是,如果有多個屏幕,它有時會錯誤的屏幕
我想上彈出獲取呼叫形式作爲參考,不通過參數像這樣
Sub myMsgBox(ByVal MsgText As String)
formMsgbox.mainText = MsgText
formMsgbox.Show()
End Sub
我想要什麼做的是參考原來的形式,像這樣
Sub myMsgBox(ByVal MsgText As String)
formMsgbox.mainText = MsgText
formMsgbox.size = new size (me.parent.size.x/2, me.parent.size.y/2)
Dim Current_Screen As Screen = Screen.FromControl(me.parent)
If Current_Screen.Primary = False Then
Dim HCenter = Current_Screen.Bounds.Left + _
(((Current_Screen.Bounds.Right - Current_Screen.Bounds.Left)/2) - ((formMsgbox.Width)/2))
Dim VCenter = (Current_Screen.Bounds.Bottom/2) - ((formMsgbox.Height)/2)
formMsgbox.StartPosition = FormStartPosition.Manual
formMsgbox.Location = New Point(HCenter, VCenter)
Else
formMsgbox.StartPosition = FormStartPosition.CenterScreen
End If
formMsgbox.Show()
End Sub
很顯然,我能做到這一點,如果我每次都通過形式,而是試圖避免這種情況。
我希望它能像原來的Microsoft Messagebox一樣工作,在那裏你不通過父項,它自己就能得到它。
預先感謝
Me.Parent不太可能是你想到的那個。考慮Form.ActiveForm,就像MsgBox()一樣。如果它*必須*是「調用形式」,那麼你必須添加一個額外的參數。 –
@HansPassant謝謝,這就是我正在尋找(Form.Activeform)。請將其發佈爲答案,以便我可以接受 –
只需向我們展示您最終在自己的帖子中做了什麼,並接受它作爲答案。 –