vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 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 - Fortgeschrittene
Re: Farbe vom Rand eines Controls ändern 
Autor: Drapondur
Datum: 24.02.04 10:58

Hallo,

man muss es nicht so kompliziert machen, wie ich im letzten Posting dachte.
Man überschreibt einfach die WndProc und ruft sofort die WndProc der Basisklasse auf. Wenn der BorderStyle = FixedSingle ist, testet man noch auf die WM_PAINT Message. Wenn die reinkommt, malt man einfach das Border-Rechteck in der gewünschten Farbe drüber.


Code:
Public Class TboxCtrl
    Inherits TextBox
 
#Region "Api-Deklarationen"
    Private Const WM_PAINT As Integer = &HF%
 
    Private Declare Function ReleaseDC Lib "user32" ( _
        ByVal hwnd As IntPtr, _
        ByVal hdc As IntPtr) As Int32
 
    Private Declare Function GetDC Lib "user32" ( _
         ByVal hwnd As IntPtr) As IntPtr
 
#End Region
 
    Private myBorderCol As System.Drawing.Color = Color.Black
 
#Region "Konstruktor"
    Public Sub New()
        MyBase.New()
        MyBase.BorderStyle = BorderStyle.FixedSingle
    End Sub
#End Region
 
#Region "Properties"
 
    Public Property BorderColor() As System.Drawing.Color
        Get
            Return myBorderCol
        End Get
        Set(ByVal Value As System.Drawing.Color)
            myBorderCol = Value
            Me.Refresh()
        End Set
    End Property
 
#End Region
 
#Region "Windowprocedure und dazugehörige Sub-Procedures"
 
    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        MyBase.WndProc(m)
 
        Try
            If MyBase.BorderStyle = BorderStyle.FixedSingle Then
                If m.Msg = WM_PAINT Then
                    DrawBorder()
                End If
            End If
        Catch ex As Exception
            Debug.WriteLine("Fehler in WndProc " & ex.Message)
            Debug.WriteLine("StackTrace " & ex.StackTrace)
        End Try
    End Sub
 
    Protected Overridable Sub DrawBorder()
        Dim rcBorder As Rectangle
        Dim hdc As IntPtr
        Dim gr As Graphics
        Dim pen As Pen
 
        hdc = GetDC(Me.Handle)
        gr = Graphics.FromHdc(hdc)
 
        rcBorder = New Rectangle(0, 0, Me.Width - 1, Me.Height - 1)
        pen = New Pen(myBorderCol, 1)
        gr.DrawRectangle(pen, rcBorder)
        pen.Dispose()
        gr.Dispose()
 
        ReleaseDC(Me.Handle, hdc)
 
    End Sub
 
#End Region
 
End Class
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Farbe vom Rand eines Controls ändern2.930Snof22.02.04 01:25
Re: Farbe vom Rand eines Controls ändern2.017WaldiMaywood22.02.04 01:30
Re: Farbe vom Rand eines Controls ändern2.024WaldiMaywood22.02.04 01:36
Re: Farbe vom Rand eines Controls ändern2.080Snof22.02.04 12:28
Re: Farbe vom Rand eines Controls ändern1.919WaldiMaywood22.02.04 13:21
Re: Farbe vom Rand eines Controls ändern1.885Snof23.02.04 21:29
Re: Farbe vom Rand eines Controls ändern1.873WaldiMaywood23.02.04 22:01
Zum Beispiel ..1.851WaldiMaywood23.02.04 22:45
Re: Zum Beispiel ..2.011Snof23.02.04 23:15
Re: Zum Beispiel ..1.803WaldiMaywood23.02.04 23:35
Re: Farbe vom Rand eines Controls ändern2.190Drapondur24.02.04 08:41
Re: Farbe vom Rand eines Controls ändern2.481Drapondur24.02.04 10:58
Danke Genau sowas hab ich gesucht. (oT)1.906Snof24.02.04 14:43
Re: Danke Genau sowas hab ich gesucht. (oT)1.824WaldiMaywood25.02.04 12:13
Re: Danke Genau sowas hab ich gesucht. (oT)1.822Drapondur25.02.04 20:09
Re: Danke Genau sowas hab ich gesucht. (oT)1.806WaldiMaywood25.02.04 20:16
Re: Danke Genau sowas hab ich gesucht. (oT)1.829Snof25.02.04 23:14
Re: Danke Genau sowas hab ich gesucht. (oT)1.959WaldiMaywood25.02.04 23:49

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