Wer eigene UserControls unter VB6 programmiert hat, kennt sicherlich die AccessKeys-Eigenschaft. Über diese Eigenschaft lassen sich Buchstaben festlegen, auf die das Control in Verbindung mit der ALT-Taste reagieren kann. VB6 löste in diesem Fall das AccessKeyPress-Ereignis aus und das Control bekam den Fokus. Unter VB.NET gibt es leider keine AccessKeys-Eigenschaft! Wie man aber dennoch innerhalb des eigenen .NET Controls (abgeleitet von der Control-Klasse) auf bestimmte Zugriffstasten (ALT+Buchstabe) reagieren kann, das zeigen wir Ihnen in unserem heutigen Extra-Tipp. Stichpunkt: ProcessMnemonic Wir erstellen also ein neues Control und fügen diesem eine UseMnemonic-Eigenschaft hinzu, über die wir festlegen können, ob auf Zugriffstasten reagiert werden soll, oder nicht. Imports System.ComponentModel Public Class myControl Inherits Control ' Zugriffstasten berücksichtigen Private m_UseMnemonic As Boolean = False ''' <summary> ''' Ruft einen Wert ab, der angibt, ob das Steuerelement ein kaufmännisches ''' Und-Zeichen in der Text-Eigenschaft des Controls als Präfix für eine ''' Zugriffstaste interpretiert, oder legt diesen fest. ''' </summary> <DefaultValue(False)> _ Public Property UseMnemonic() As Boolean Get Return m_UseMnemonic End Get Set(ByVal value As Boolean) m_UseMnemonic = value Me.Invalidate() End Set End Property Public Overrides Property Text() As String Get Return MyBase.Text End Get Set(ByVal value As String) MyBase.Text = value Me.Invalidate() End Set End Property Private Sub myControl_Paint(ByVal sender As Object, _ ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint ' Rahmen zeichnen e.Graphics.FillRectangle(New SolidBrush(MyBase.BackColor), Me.ClientRectangle) ' Hintergrund füllen Dim r As New Rectangle(Me.ClientRectangle.X, Me.ClientRectangle.Y, _ Me.ClientRectangle.Width - 1, Me.ClientRectangle.Height - 1) e.Graphics.DrawRectangle(Pens.Black, r) ' Textausgabe unter Berücksichtigung der UseMnemonic-Eigenschaft Dim flags As System.Windows.Forms.TextFormatFlags = _ TextFormatFlags.HorizontalCenter Or _ TextFormatFlags.VerticalCenter Or _ TextFormatFlags.WordEllipsis Or _ TextFormatFlags.EndEllipsis ' &-Zeichen darstellen? If Not m_UseMnemonic Then flags = flags Or TextFormatFlags.NoPrefix TextRenderer.DrawText(e.Graphics, MyBase.Text, MyBase.Font, _ Me.ClientRectangle, MyBase.ForeColor, flags) End Sub ' Zugriffstasten auswerten Protected Overrides Function ProcessMnemonic(ByVal charCode As Char) As Boolean If m_UseMnemonic Then If Control.IsMnemonic(charCode, Me.Text) Then MsgBox("Zugriffstaste wurde gedrückt!", MsgBoxStyle.Information) ' Mitteilen, dass das Ereignis behandelt wurde Return True End If End If Return MyBase.ProcessMnemonic(charCode) End Function End Class Dieser Tipp wurde bereits 1.328 mal aufgerufen. Anzeige
![]() ![]() ![]() (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevWizard für VB5/6 ![]() Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Buchempfehlung Tipp des Monats ![]() Dieter Otter PopUp-Menü wird nicht angezeigt :-( In diesem Tipp verraten wir Ihnen, wie Sie Probleme mit PopUp-Menüs umgehen können, wenn diese unter bestimmten Umständen einfach nicht angezeigt werden. vb@rchiv CD Vol.6 ![]() ![]() Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. |
||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |