Falls jemand mal diese Funktion braucht, ein Label rechtsbündig in der Menu Toolstrip Bar, das maximal den verfügbaren Platz zwischen letztem Menu-Eintrag und rechten Rand des Menu-Toolstrip ausfüllt und den Text rechsbündig im Label am rechten Rand des ToolStrips anzeigt. Wenn der Text breiter als der verfügbare Platz ist, wird der Text gekürzt und mit "..." ergänzt:
Das funktioniert bei mir einwandfrei.
VB.NET-Quellcode
- ' in Deklaration
- Dim mnu_Mainform_label As New ToolStripLabel()
- Dim LabelText As String
- ' Im Load-Handler
- ' Label in Menu ToolStrip
- mnu_Mainform_label.Padding = New Padding(0, 0, 5, 0)
- mnu_Mainform_label.Alignment = ToolStripItemAlignment.Right
- mnu_Mainform_label.TextAlign = System.Drawing.ContentAlignment.MiddleRight
- mnu_Mainform_label.AutoSize = True
- mnu_MainForm.Items.Add(mnu_Mainform_label)
- ' im Mainform-SizeChanged
- Private Sub StateChangedForm_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.SizeChanged
- LabelInMenuToolStripSetzenUndAnpassen()
- End Sub
- ' Text in Label schreiben und Label anpassen
- Private Sub TextInLabelSchreiben()
- LabelText = "Mein Text"
- LabelInMenuToolStripSetzenUndAnpassen()
- End Sub
- ' SubText-Ausgabe und Breitenanpassung des Labels
- Private Sub LabelInMenuToolStripSetzenUndAnpassen()
- If LabelText IsNot Nothing Then
- mnu_Mainform_label.Text = LabelText
- ' Maximal verfügbare Breite
- Dim menuWidth As Integer = mnu_MainForm.Items.OfType(Of ToolStripMenuItem)().Sum(Function(item) item.Width)
- Dim availableWidth As Integer = mnu_MainForm.Width - menuWidth
- If availableWidth < 0 Then availableWidth = 0
- ' Setzen der Breite des Labels
- ' Text kürzen, wenn er nicht passt
- Dim displayText As String = LabelText
- Do While TextRenderer.MeasureText(displayText & "...", mnu_Mainform_label.Font).Width > availableWidth - 20 AndAlso displayText.Length > 0
- displayText = displayText.Substring(0, displayText.Length - 1)
- Loop
- If LabelText <> displayText Then
- displayText &= "..."
- End If
- mnu_Mainform_label.Text = displayText
- End If
- End Sub
Das funktioniert bei mir einwandfrei.
Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Dideldum“ ()