vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Button Fokus 
Autor: Manfred X
Datum: 24.04.15 10:24

Hallo!

Du mußt meine Beispiele und die Erläuterungen genauer anschauen!

Vergiß endlich dieses "CreateGraphics" im Paint-Eventhandler !!!!
Es ist im Paint-Event des darzustellenden Controls zu zeichnen
unter Verwendung des als Parameter gegebenen Graphics-Objekts und der gegebenen Infos !!!

Wenn Du auf dem Panel oder einer Form zeichnen willst,
mußt Du eine entsprechende Ableitung des Panels oder der Form verwenden,
die dessen Paint-Methode geeignet überschreibt (wie bereits gezeigt).


Beispiel für einen Rahmen, der direkt um den Button auf dem Panel gezeichnet
wird.
Die Rectangle-Inflate-Methode kann vergrößern und verkleinern.
Einen Rahmen zeichnet man mit der "DrawRectangle"-Methode.
"Fillrectangle" füllt eine Fläche mit Farbe aus.
Imports System.Windows.Forms
Public Class PanelWithFramedButtons
    Inherits Panel
 
    Public Property ButtonFrameBorderColor As Color = Color.Red
    Public Property ButtonFrameBorderWidth As Integer = 2
 
    Protected Overrides Sub OnPaint _
       (e As System.Windows.Forms.PaintEventArgs)
        MyBase.OnPaint(e)
 
        With e.Graphics
            Using br As New SolidBrush(Me.BackColor)
                .FillRectangle(br, e.ClipRectangle)
            End Using
 
            For i As Integer = 0 To Me.Controls.Count - 1
                If TypeOf Me.Controls(i) Is Button Then
                    'Besitzt der Button den Fokus
                    If Controls(i).Focused Then
                        'Position und Größe des Button 
                        Dim crect As Rectangle = Controls(i).Bounds
 
                        'Rechteck um halbe Linienstärke erweitern 
                        Dim frect As Rectangle = Rectangle.Inflate(crect, _
                            ButtonFrameBorderWidth \ 2, ButtonFrameBorderWidth _
                            \ 2)
 
                        'Rahmen auf dem Panel zeichnen
                        Using pn As New Pen _
                            (ButtonFrameBorderColor, ButtonFrameBorderWidth)
                            .DrawRectangle(pn, frect)
                        End Using
                    Else
                        'Kein Fokus
                        '............... 
                    End If
                End If
            Next i
        End With
    End Sub
End Class
Wenn der Button einen Rahmen innerhalb seiner Abmessung zeichnen soll,
nutze die "FlatButtonWithFocusRectangle"-Klasse und verkleinere beim Zeichnen
des Rahmens (Drawrectangle) zusätzlich dessen Abmessungen um eine halbe
Linienstärke.
Dim drawrectrect As Rectangle = _
    Rectangle.Inflate(pevent.ClipRectangle, -BorderWidth \ 2, -BorderWidth \ 2)
Um einen Rahmen nur zu zeichnen, wenn der Fokus auf den Button gesetzt ist,
mußt Du beim Zeichnen als Bedingung die "Focused"-Eigenschaft des Button beachten,
wie gezeigt. Das sehe ich in Deinem Code nicht.

Beitrag wurde zuletzt am 24.04.15 um 10:25:36 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Button Fokus2.072henrikl200022.04.15 14:50
Re: Button Fokus1.445Manfred X22.04.15 14:54
Re: Button Fokus1.329henrikl200022.04.15 16:07
Re: Button Fokus1.365Manfred X22.04.15 16:40
Re: Button Fokus1.377henrikl200022.04.15 17:07
Re: Button Fokus1.346Manfred X22.04.15 17:55
Re: Button Fokus1.479henrikl200023.04.15 13:08
Re: Button Fokus1.510Manfred X23.04.15 13:50
Re: Button Fokus1.347henrikl200024.04.15 08:38
Re: Button Fokus1.378Manfred X24.04.15 10:24
Re: Button Fokus1.359henrikl200025.04.15 11:36
Re: Button Fokus1.343Manfred X25.04.15 12:27
Re: Button Fokus1.513henrikl200025.04.15 12:48
Re: Button Fokus1.346henrikl200024.04.15 10:14

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel