Hallo!
Du könntest die Opacity-Eigenschaft der Form nutzen, um temporär
Teil-Transparenz zu erzeugen und eine Meldebox vor diese Form
einblenden.
Die Meldebox ....
Public Class frmMessage
Dim _messagetext As String
Public Property MessageText As String
Set(value As String)
_messagetext = value
End Set
Get
Return _messagetext
End Get
End Property
Private _messagefont As Font
Public Property Messagefont As Font
Set(value As Font)
_messagefont = value
End Set
Get
Return _messagefont
End Get
End Property
Public ReadOnly Property GetGraphics As Drawing.Graphics
Get
Return lblMessage.CreateGraphics
End Get
End Property
Dim WithEvents lblMessage As New Label With {.Parent = Me}
Private Sub frmMessage_Load(sender As Object,
e As EventArgs) Handles MyBase.Load
Me.FormBorderStyle = FormBorderStyle.None
'Me.TransparencyKey = Color.Transparent
lblMessage.BackColor = Color.White
With lblMessage.DataBindings
.Add("Text", Me, "Messagetext")
.Add("Font", Me, "Messagefont")
End With
End Sub
Private Sub frmMessage_Resize(sender As Object,
e As EventArgs) Handles Me.Resize
lblMessage.Size =
New Drawing.Size(Me.ClientRectangle.Width, Me.ClientRectangle.Height)
End Sub
Private Sub lblMessage_Click(sender As Object,
e As EventArgs) Handles lblMessage.Click
Me.Close()
End Sub
End Class .
.
Das Formular ....
Public Class frmMother
Dim pl As New Panel With _
{.Parent = Me, .BorderStyle = BorderStyle.Fixed3D}
Dim WithEvents btnMessage As New Button With
{.Parent = pl, .Location = New Point(100, 100),
.Text = "Show Message", .Width = 100}
Private Sub frmMother_Load(sender As Object,
e As EventArgs) Handles MyBase.Load
Me.Size = New Size(500, 500)
End Sub
Private Sub btnMessage_Click(sender As Object,
e As EventArgs) Handles btnMessage.Click
Me.Opacity = 0.5 'Hauptformular teil-transparent anzeigen
Using Mymessage As New frmMessage
With Mymessage
'Eigentümer des Dialogs setzen
.Owner = Me
'Text und Font der Meldung
.MessageText =
"Das ist eine Meldung. " &
"Bei einem Click auf das Meldefenster " &
"wird die Anzeige beendet."
.Messagefont = New Font("Arial", 16, FontStyle.Italic)
'Erforderliche Höhe der Meldung
'bei festgelegter Breite ermitteln
Dim sz As SizeF
Dim message_width As Integer = 200
Using g As Graphics = .GetGraphics
sz = g.MeasureString(.MessageText, .Messagefont,
message_width)
End Using
.ClientSize = New Size(message_width, CInt(sz.Height * 1.1))
'Dialog lokalisieren und ausführen
.StartPosition = FormStartPosition.CenterParent
.ShowDialog()
End With
End Using
Me.Opacity = 1 'Hauptformular ohne Transparenz
End Sub
Private Sub frmMother_Resize(sender As Object,
e As EventArgs) Handles Me.Resize
pl.Size = Me.ClientSize
End Sub
End Class
Beitrag wurde zuletzt am 17.04.18 um 09:24:32 editiert. |